- 浏览: 495660 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1028)
- [发布至博客园首页] (826)
- [随笔分类]个人生活随笔 (14)
- [网站分类]首页候选区 (26)
- [网站分类]SharePoint (15)
- [网站分类]其他技术区 (6)
- [随笔分类]批处理技巧 (6)
- [随笔分类].net 2.0 (3)
- [随笔分类]SharePoint2007(MOSS2007) (0)
- [网站分类].NET新手区 (6)
- [网站分类]ASP.NET (6)
- [网站分类]架构设计 (18)
- [网站分类]程序人生 (2)
- [网站分类]SQL Server (2)
- WCF (3)
- 编程技巧 (2)
- 模式架构 (2)
- 分析设计 (4)
- 生活随笔 (0)
- 软件工程 (1)
- Android实例 (2)
最新评论
-
zilong0536:
楼主您好:
请问发表博文支持图片的功能怎么实现啊,一直没有思路 ...
新浪微博开放平台开发-android客户端(3) -
nicegege:
小弟 学习了
帮助中国移动设计10086的排队小模块 -
zl7824516:
用什么技术没说啊
通告(公告),消息(站内短信),提醒的设计:通告 -
virusswb:
源码下载: SinaWeibo2 源码下载之后,将后缀改为ra ...
新浪微博开放平台开发-android客户端(3) -
Jimmyxu0311:
找不到源码下载
新浪微博开放平台开发-android客户端(3)
反射和Attribute是.NET的两种技术,可以应用在很多的地方。
反射可以反射类中的属性,方法,实现动态调用,也经常在三层工厂中使用,反射接口的实现。
Attribute,个人理解,就是一个特性,可以添加在任何自定义类型上面,然后添加一些注释,也是很有用的。
本篇就示例讲解一个他们的结合使用:使用反射和Attribute动态显示代码中的注释内容。其中也杂合它一些其他的内容,一个是前几天写的一个C#的加密解密算法,包括Silverlight的MD5算法。还有就是一个商品规格的计算方法,比如给出需要购买的总量,然后计算每种规格需要购买的数量,和总的花费。
结果如下图
代码如下
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Reflection;
namespace ConsoleApplication1
{
[AttributeUsage(AttributeTargets.Class)]
class CodeReviewAttribute : System.Attribute
{
private string _reviewer;
public string Reviewer
{
get { return _reviewer; }
}
private string _date;
public string Date
{
get { return _date; }
}
private string _comment;
public string Comment
{
get { return _comment; }
set { _comment = value; }
}
public CodeReviewAttribute(string reviewer, string date)
{
this._reviewer = reviewer;
this._date = date;
}
}
[CodeReview("swb", "2009-9-9", Comment = "代码不好")]
class MyClass
{
}
[AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field)]
class NoteAttribute : System.Attribute
{
private string _name;
public string Name
{
get { return _name; }
}
public NoteAttribute(string name)
{
this._name = name;
}
}
enum Log
{
[Note("添加 用户")]
AddUser,
[Note("修改 用户")]
ModifyUser
}
class EnumDescription
{
public static string Parse(Log type)
{
FieldInfo fields = type.GetType().GetField(type.ToString());
object[] objs = fields.GetCustomAttributes(true);
return ((NoteAttribute)objs[0]).Name;
}
}
public interface IChinese
{
string Speak();
}
public class CNSpeaker : IChinese
{
#region Chinese Members
public string Speak()
{
return "Chinese";
}
#endregion
}
public interface IEnglish
{
string Speak();
}
public class ENSpeaker : IEnglish
{
#region English Members
string IEnglish.Speak()
{
return "English";
}
#endregion
}
class Program
{
static void Main(string[] args)
{
CNSpeaker cn = new CNSpeaker();
Console.WriteLine(cn.Speak());
IEnglish en = new ENSpeaker();
Console.WriteLine(en.Speak());
Console.WriteLine("---------------------");
string str = "123";
Console.WriteLine(string.Format("123 encrypt result: {0}", WebMD5Provider.WebFormMD5Encrypt(str)));
Console.WriteLine("---------------------");
MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
byte[] encryptedBytes = md5Provider.ComputeHash(Encoding.UTF8.GetBytes(str));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
Console.WriteLine(string.Format("123 encrypt result: {0}", sb.ToString()));
Console.WriteLine("---------------------");
System.Reflection.MemberInfo info = typeof(MyClass);
CodeReviewAttribute att = (CodeReviewAttribute)Attribute.GetCustomAttribute(info, typeof(CodeReviewAttribute));
if (att != null)
{
Console.WriteLine("MyClass 代码监察人:{0}", att.Reviewer);
Console.WriteLine("MyClass 检查时间:{0}", att.Date);
Console.WriteLine("MyClass 备注:{0}", att.Comment);
}
Console.WriteLine("---------------------");
Log log = Log.AddUser;
Console.WriteLine(string.Format ("Enum Log 的 AddUser 的注释是: {0}",EnumDescription.Parse(log)));
Console.WriteLine("---------------------");
Int64? bbb = 0;
int? aaa = 0;
Console.WriteLine("---------------------");
decimal area = 110;
Console.WriteLine("你的土地面积是:{0}", area);
decimal amount = 10m;
Console.WriteLine("你的每亩用量是是:{0}", amount );
decimal budget = 0;
List<pkgspec> pkgs = new List<pkgspec>();
pkgs.Add(new pkgspec() { amount = 200, price = 180, id = 2 });
pkgs.Add(new pkgspec() { amount = 100, price = 100, id = 1 });
pkgs.Add(new pkgspec() { amount = 250, price = 250, id = 3 });
pkgs.Sort(new Comparison<pkgspec>(compareDesc));
// pkgs.Sort(new Comparison<pkgspec>(compareAsc));
decimal totalAmount = area * amount;
Console.WriteLine("你的总共用量是:{0}", totalAmount);
int num = 0;
List<pkgselect> select = new List<pkgselect>();
foreach (pkgspec pkg in pkgs)
{
if (totalAmount % pkg.amount == totalAmount)
{
num =1;
budget += num * pkg.price;
select.Add(new pkgselect() { id = pkg.id, num = num, price=pkg.price });
break;
}
else if (totalAmount % pkg.amount == 0)
{
num = (int)(totalAmount / pkg.amount);
budget += num * pkg.price;
select.Add(new pkgselect() { id = pkg.id, num = (int)(totalAmount / pkg.amount) , price=pkg.price });
break;
}
else
{
num = (int)(totalAmount / pkg.amount);
budget += num * pkg.price;
select.Add(new pkgselect() { id = pkg.id, num = num , price=pkg.price });
totalAmount = totalAmount - num * pkg.amount;
continue;
}
}
foreach (pkgselect s in select)
{
Console.WriteLine("你需要购买的包装编号是:{0}, 数量是 {1} 个 , 单价是 {2}", s.id, s.num, s.price);
}
Console.WriteLine("你购买的总价是: {0}", budget);
Console.ReadLine();
}
private static int compareAsc(pkgspec pkg1, pkgspec pkg2)
{
if (pkg1.amount > pkg2.amount)
return 1;
if (pkg1.amount < pkg2.amount)
return -1;
else
return 0;
}
private static int compareDesc(pkgspec pkg1, pkgspec pkg2)
{
if (pkg1.amount < pkg2.amount)
return 1;
if (pkg1.amount > pkg2.amount)
return -1;
else
return 0;
}
}
/// <summary>
/// 选中的包装
/// </summary>
class pkgselect
{
/// <summary>
/// 选中ID
/// </summary>
public int id;
/// <summary>
/// 购买数量
/// </summary>
public int num;
/// <summary>
/// 单价
/// </summary>
public decimal price;
}
/// <summary>
/// 包装类型
/// </summary>
class pkgspec : IComparable<pkgspec>
{
/// <summary>
/// 编号
/// </summary>
public int id;
/// <summary>
/// 包装量
/// </summary>
public decimal amount;
/// <summary>
/// 价格
/// </summary>
public decimal price;
#region IComparable<pkgspec> Members
public int CompareTo(pkgspec other)
{
if (this.amount > other.amount)
return 1;
if (this.amount == other.amount)
return 0;
else
return -1;
}
#endregion
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Reflection;
namespace ConsoleApplication1
{
[AttributeUsage(AttributeTargets.Class)]
class CodeReviewAttribute : System.Attribute
{
private string _reviewer;
public string Reviewer
{
get { return _reviewer; }
}
private string _date;
public string Date
{
get { return _date; }
}
private string _comment;
public string Comment
{
get { return _comment; }
set { _comment = value; }
}
public CodeReviewAttribute(string reviewer, string date)
{
this._reviewer = reviewer;
this._date = date;
}
}
[CodeReview("swb", "2009-9-9", Comment = "代码不好")]
class MyClass
{
}
[AttributeUsage(AttributeTargets.Enum | AttributeTargets.Field)]
class NoteAttribute : System.Attribute
{
private string _name;
public string Name
{
get { return _name; }
}
public NoteAttribute(string name)
{
this._name = name;
}
}
enum Log
{
[Note("添加 用户")]
AddUser,
[Note("修改 用户")]
ModifyUser
}
class EnumDescription
{
public static string Parse(Log type)
{
FieldInfo fields = type.GetType().GetField(type.ToString());
object[] objs = fields.GetCustomAttributes(true);
return ((NoteAttribute)objs[0]).Name;
}
}
public interface IChinese
{
string Speak();
}
public class CNSpeaker : IChinese
{
#region Chinese Members
public string Speak()
{
return "Chinese";
}
#endregion
}
public interface IEnglish
{
string Speak();
}
public class ENSpeaker : IEnglish
{
#region English Members
string IEnglish.Speak()
{
return "English";
}
#endregion
}
class Program
{
static void Main(string[] args)
{
CNSpeaker cn = new CNSpeaker();
Console.WriteLine(cn.Speak());
IEnglish en = new ENSpeaker();
Console.WriteLine(en.Speak());
Console.WriteLine("---------------------");
string str = "123";
Console.WriteLine(string.Format("123 encrypt result: {0}", WebMD5Provider.WebFormMD5Encrypt(str)));
Console.WriteLine("---------------------");
MD5CryptoServiceProvider md5Provider = new MD5CryptoServiceProvider();
byte[] encryptedBytes = md5Provider.ComputeHash(Encoding.UTF8.GetBytes(str));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
Console.WriteLine(string.Format("123 encrypt result: {0}", sb.ToString()));
Console.WriteLine("---------------------");
System.Reflection.MemberInfo info = typeof(MyClass);
CodeReviewAttribute att = (CodeReviewAttribute)Attribute.GetCustomAttribute(info, typeof(CodeReviewAttribute));
if (att != null)
{
Console.WriteLine("MyClass 代码监察人:{0}", att.Reviewer);
Console.WriteLine("MyClass 检查时间:{0}", att.Date);
Console.WriteLine("MyClass 备注:{0}", att.Comment);
}
Console.WriteLine("---------------------");
Log log = Log.AddUser;
Console.WriteLine(string.Format ("Enum Log 的 AddUser 的注释是: {0}",EnumDescription.Parse(log)));
Console.WriteLine("---------------------");
Int64? bbb = 0;
int? aaa = 0;
Console.WriteLine("---------------------");
decimal area = 110;
Console.WriteLine("你的土地面积是:{0}", area);
decimal amount = 10m;
Console.WriteLine("你的每亩用量是是:{0}", amount );
decimal budget = 0;
List<pkgspec> pkgs = new List<pkgspec>();
pkgs.Add(new pkgspec() { amount = 200, price = 180, id = 2 });
pkgs.Add(new pkgspec() { amount = 100, price = 100, id = 1 });
pkgs.Add(new pkgspec() { amount = 250, price = 250, id = 3 });
pkgs.Sort(new Comparison<pkgspec>(compareDesc));
// pkgs.Sort(new Comparison<pkgspec>(compareAsc));
decimal totalAmount = area * amount;
Console.WriteLine("你的总共用量是:{0}", totalAmount);
int num = 0;
List<pkgselect> select = new List<pkgselect>();
foreach (pkgspec pkg in pkgs)
{
if (totalAmount % pkg.amount == totalAmount)
{
num =1;
budget += num * pkg.price;
select.Add(new pkgselect() { id = pkg.id, num = num, price=pkg.price });
break;
}
else if (totalAmount % pkg.amount == 0)
{
num = (int)(totalAmount / pkg.amount);
budget += num * pkg.price;
select.Add(new pkgselect() { id = pkg.id, num = (int)(totalAmount / pkg.amount) , price=pkg.price });
break;
}
else
{
num = (int)(totalAmount / pkg.amount);
budget += num * pkg.price;
select.Add(new pkgselect() { id = pkg.id, num = num , price=pkg.price });
totalAmount = totalAmount - num * pkg.amount;
continue;
}
}
foreach (pkgselect s in select)
{
Console.WriteLine("你需要购买的包装编号是:{0}, 数量是 {1} 个 , 单价是 {2}", s.id, s.num, s.price);
}
Console.WriteLine("你购买的总价是: {0}", budget);
Console.ReadLine();
}
private static int compareAsc(pkgspec pkg1, pkgspec pkg2)
{
if (pkg1.amount > pkg2.amount)
return 1;
if (pkg1.amount < pkg2.amount)
return -1;
else
return 0;
}
private static int compareDesc(pkgspec pkg1, pkgspec pkg2)
{
if (pkg1.amount < pkg2.amount)
return 1;
if (pkg1.amount > pkg2.amount)
return -1;
else
return 0;
}
}
/// <summary>
/// 选中的包装
/// </summary>
class pkgselect
{
/// <summary>
/// 选中ID
/// </summary>
public int id;
/// <summary>
/// 购买数量
/// </summary>
public int num;
/// <summary>
/// 单价
/// </summary>
public decimal price;
}
/// <summary>
/// 包装类型
/// </summary>
class pkgspec : IComparable<pkgspec>
{
/// <summary>
/// 编号
/// </summary>
public int id;
/// <summary>
/// 包装量
/// </summary>
public decimal amount;
/// <summary>
/// 价格
/// </summary>
public decimal price;
#region IComparable<pkgspec> Members
public int CompareTo(pkgspec other)
{
if (this.amount > other.amount)
return 1;
if (this.amount == other.amount)
return 0;
else
return -1;
}
#endregion
}
}
代码
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Security.Cryptography;
using System.IO;
namespace ConsoleApplication1
{
/// <summary>
/// 字符串加解密工具类
/// </summary>
public static class EncryptUtility
{
#region WinForm 的MD5和SHA1哈希,使得和System.Web.Security.FormsAuthentication的结果一致
public static string WinFormMD5Encrypt(string data)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(data));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString().ToUpper();
}
public static string WinFormSHA1Encrypt(string data)
{
SHA1CryptoServiceProvider md5 = new SHA1CryptoServiceProvider();
byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(data));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString().ToUpper();
}
#endregion
#region WebForm中的 MD5 和 SHA1 哈希
/// <summary>
/// 返回MD5哈希结果
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string WebFormMD5Encrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
return FormsAuthentication.HashPasswordForStoringInConfigFile(data, "md5");
}
/// <summary>
/// 返回SHA1哈希结果
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string WebFormSHA1Encrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
return FormsAuthentication.HashPasswordForStoringInConfigFile(data, "sha1");
}
#endregion
#region 普通的字符变换加解密
/// <summary>
/// 普通字符还变
/// 加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string CommonEncrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
string result = string.Empty;
int len = data.Length;
for (int i = 0; i < len; i++)
{
result += (char)(data[i] + 10 - 1 * 2);
}
return result;
}
/// <summary>
/// 普通的字符变换
/// 解密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string CommonDecrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
string result = string.Empty;
int len = data.Length;
for (int i = 0; i < len; i++)
{
result += (char)(data[i] - 10 + 1 * 2);
}
return result;
}
#endregion
#region 带有密钥的加解密
private static readonly string KEY_64 = System.Configuration.ConfigurationManager.AppSettings["key_64"];
/// <summary>
/// 带有密钥的加解密
/// 加密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string KeyEncrypt(string data)
{
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(data);
provider.Key = ASCIIEncoding.ASCII.GetBytes(KEY_64.Substring(0, 8));
provider.IV = ASCIIEncoding.ASCII.GetBytes(KEY_64);
MemoryStream ms = new MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, provider.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Convert.ToBase64String(ms.ToArray());
ms.Close();
return str;
}
}
/// <summary>
/// 带有密钥的加解密
/// 解密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string KeyDecrypt(string data)
{
byte[] inputByteArray = Convert.FromBase64String(data);
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
provider.Key = ASCIIEncoding.ASCII.GetBytes(KEY_64.Substring(0, 8));
provider.IV = ASCIIEncoding.ASCII.GetBytes(KEY_64);
MemoryStream ms = new MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, provider.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}
}
#endregion
}
public class
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Security.Cryptography;
using System.IO;
namespace ConsoleApplication1
{
/// <summary>
/// 字符串加解密工具类
/// </summary>
public static class EncryptUtility
{
#region WinForm 的MD5和SHA1哈希,使得和System.Web.Security.FormsAuthentication的结果一致
public static string WinFormMD5Encrypt(string data)
{
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(data));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString().ToUpper();
}
public static string WinFormSHA1Encrypt(string data)
{
SHA1CryptoServiceProvider md5 = new SHA1CryptoServiceProvider();
byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(data));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat("{0:x2}", encryptedBytes[i]);
}
return sb.ToString().ToUpper();
}
#endregion
#region WebForm中的 MD5 和 SHA1 哈希
/// <summary>
/// 返回MD5哈希结果
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string WebFormMD5Encrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
return FormsAuthentication.HashPasswordForStoringInConfigFile(data, "md5");
}
/// <summary>
/// 返回SHA1哈希结果
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string WebFormSHA1Encrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
return FormsAuthentication.HashPasswordForStoringInConfigFile(data, "sha1");
}
#endregion
#region 普通的字符变换加解密
/// <summary>
/// 普通字符还变
/// 加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string CommonEncrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
string result = string.Empty;
int len = data.Length;
for (int i = 0; i < len; i++)
{
result += (char)(data[i] + 10 - 1 * 2);
}
return result;
}
/// <summary>
/// 普通的字符变换
/// 解密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string CommonDecrypt(string data)
{
if (string.IsNullOrEmpty(data))
throw new Exception("加密字符串不能为空");
string result = string.Empty;
int len = data.Length;
for (int i = 0; i < len; i++)
{
result += (char)(data[i] - 10 + 1 * 2);
}
return result;
}
#endregion
#region 带有密钥的加解密
private static readonly string KEY_64 = System.Configuration.ConfigurationManager.AppSettings["key_64"];
/// <summary>
/// 带有密钥的加解密
/// 加密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string KeyEncrypt(string data)
{
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
byte[] inputByteArray = Encoding.UTF8.GetBytes(data);
provider.Key = ASCIIEncoding.ASCII.GetBytes(KEY_64.Substring(0, 8));
provider.IV = ASCIIEncoding.ASCII.GetBytes(KEY_64);
MemoryStream ms = new MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, provider.CreateEncryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Convert.ToBase64String(ms.ToArray());
ms.Close();
return str;
}
}
/// <summary>
/// 带有密钥的加解密
/// 解密
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string KeyDecrypt(string data)
{
byte[] inputByteArray = Convert.FromBase64String(data);
using (DESCryptoServiceProvider provider = new DESCryptoServiceProvider())
{
provider.Key = ASCIIEncoding.ASCII.GetBytes(KEY_64.Substring(0, 8));
provider.IV = ASCIIEncoding.ASCII.GetBytes(KEY_64);
MemoryStream ms = new MemoryStream();
using (CryptoStream cs = new CryptoStream(ms, provider.CreateDecryptor(), CryptoStreamMode.Write))
{
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
cs.Close();
}
string str = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return str;
}
}
#endregion
}
public class
发表评论
-
NET 应用架构指导 V2 学习笔记(十六) 服务层设计指导
2010-06-04 00:13 547如果你的应用是通 ... -
NET 应用架构指导 V2 学习笔记(十七) 组件设计指导
2010-06-05 00:48 669组件提供了一种将 ... -
NET 应用架构指导 V2 学习笔记(十八) 表现层组件设计指导
2010-06-05 21:09 528本章讲述的是你在设计用户界面组件和表现层逻辑组件的时候应该 ... -
NET 应用架构指导 V2 学习笔记(十九) 表现层组件设计指导
2010-06-06 06:15 5915 决定数据绑定的 ... -
NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导
2010-06-07 06:58 614前言 业务组件 ... -
微软企业库5.0学习笔记(四十二)异常处理模块
2010-06-14 00:04 836企业库的异常处理 ... -
关于程序员在30岁、35岁之后怎么办的新思考
2010-06-14 10:40 624首先给大家问个好 ... -
NET 应用架构指导 V2 学习笔记(二十四) 跨层关注问题
2010-06-17 20:00 594概况 大部分的 ... -
微软企业库5.0学习笔记(四十三)数据验证模块
2010-06-19 08:07 996概况 任何接受用户或者是其他系统输入的应用,一定要确保 ... -
关于项目进度慢的思考----如何提高整体开发效率
2010-06-21 23:42 803我们都是软件行业 ... -
微软企业库5.0学习笔记(四十四)实战数据验证模块
2010-06-23 19:22 8401 在业务对象上添加验证 添加对程序集【Microso ... -
微软企业库5.0学习笔记(四十五)实战数据验证模块----高级篇
2010-06-24 19:41 9691、添加自定义的提示信息 验证失败的提示信息可以自定义 ... -
面向对象类设计的五大原则(一)单一职责原则Single Responsibility Principle
2010-06-29 15:45 777引言 面向对象类设计,或者说是面向对象设计,有五大原则 ... -
《深入浅出设计模式-中文版》读书笔记 开篇乱弹(一)
2010-07-01 06:42 650oreilly的《Head.First ... -
《深入浅出设计模式-中文版》读书笔记-继承与组合(三)
2010-07-03 16:53 605经过上一次的改造 ... -
《深入浅出设计模式-中文版》读书笔记-观察者模式(四)
2010-07-06 06:34 633今天要接触的是观 ... -
利用attribute实现简单的ORM
2010-07-09 15:27 682我不知道NH的ORM具 ... -
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
2010-07-14 13:02 807题外话 最近已经在努力学习了,学习基本功,学习设计模式 ... -
《深入浅出设计模式-中文版》读书笔记-工厂模式(五)
2010-07-16 12:46 699今天给大家带来的是:工厂模式。 我们在代码中创建一个对 ... -
Head.First.Object-Oriented.Design.and.Analysis《深入浅出面向对象的分析与设计》读书笔记(一)
2010-07-18 21:47 671题外话 又是一本Head.First系列的书,这个系列 ...
相关推荐
## C#中的反射和特性实现ORM映射详解 ### (一)反射 反射是.NET框架提供的一种强大的...反射提供了动态访问和操作对象的能力,而特性则为我们提供了在代码中添加元数据信息的手段,两者结合是实现ORM映射的关键。
javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing....
javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border ...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border ...
javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing.border ...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供一组“轻量级”(全部是 Java 语言)组件,尽量让这些组件在所有平台上的工作方式都相同。 javax.swing....
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
在Java中,注释可以帮助其他开发者理解代码的功能和目的。 15. **Compile (编译)**:将源代码转换成可执行文件的过程。编译器负责将高级语言翻译成机器语言。 16. **Const (常量)**:保留字,在某些语言中用于定义...
- **用途**:注释可以帮助其他人理解代码的功能和工作原理。 #### Compile (编译) - **定义**:编译是将源代码转换为机器代码或字节码的过程。 - **用途**:Java程序需要先经过编译,然后才能被Java虚拟机(JVM)...
- **用途**: 在描述UI元素显示内容时使用。 #### 33. Exists (存在) - **定义**: SQL 中用于判断是否存在满足条件的记录。 - **用途**: 用于数据库查询中。 #### 34. Extends (扩展) - **定义**: 关键词,用于...
Blockdefinition是指定义块内容和属性的过程。 ### blockreference (块引用) Blockreference是指在绘图中插入块实例的操作。 ### blocktable (块表) Blocktable是指存储所有已定义块信息的数据结构。 ### bmpout ...
Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv.直接地,立即[di'rektli, dai'rektli]) apply v.应用,适用 [ә'plai] application n.应用,应用程序 [,æ...