累加的公用类库积累。积攒更丰富的公用类库资源。

/// <summary>    
/// 通过字符串获取枚举成员实例    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
/// <param name=”member”>枚举成员的常量名或常量值,    
/// 范例:Enum1枚举有星星点点个成员A=0,B=1,则传出”A”或”0″获取 Enum1.A 朵举类型</param>    
public static T GetInstance<T>(string member)    
   
/// <summary>    
/// 获取枚举成员称及成员值的键值对聚集    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
public static Dictionary<string, object> GetMemberKeyValue<T>()    
   
/// <summary>    
/// 获取枚举所有成员称    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
public static string[] GetMemberNames<T>()    
   
/// <summary>    
/// 获取枚举成员的号    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
/// <param name=”member”>枚举成员实例或成员值,    
/// 范例:Enum1枚举有三三两两只成员A=0,B=1,则传出Enum1.A或0,获取成员称”A”</param>    
public static string GetMemberName<T>(object member)    
   
/// <summary>    
/// 获取枚举所有成员值    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
public static Array GetMemberValues<T>()    
   
/// <summary>    
/// 获取枚举成员的值    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
/// <param name=”memberName”>枚举成员的常量名,    
/// 范例:Enum1枚举有有限只成员A=0,B=1,则传出”A”获取0</param>    
public static object GetMemberValue<T>(string memberName)    
   
/// <summary>    
/// 获取枚举的根基项目    
/// </summary>    
/// <param name=”enumType”>枚举类型</param>    
public static Type GetUnderlyingType(Type enumType)    
   
/// <summary>    
/// 检测枚举是否带有指定成员    
/// </summary>    
/// <typeparam name=”T”>枚举名,比如Enum1</typeparam>    
/// <param name=”member”>枚举成员叫或成员值</param>    
public static bool IsDefined<T>(string member)    
   
/// <summary>    
/// 返回指定枚举类型的指定值的讲述    
/// </summary>    
/// <param name=”t”>枚举类型</param>    
/// <param name=”v”>枚举值</param>    
/// <returns></returns>    
public static string GetDescription(System.Type t, object v)    
   
/// <summary>    
/// 返回指定枚举类型的指定值的称    
/// </summary>    
/// <param name=”t”>指定枚举类型</param>    
/// <param name=”v”>指定值</param>    
/// <returns></returns>    
private static string GetName(System.Type t, object v)    
   
/// <summary>    
/// 获取枚举类型的应和序号及描述称    
/// </summary>    
/// <param name=”t”>枚举类型</param>    
/// <returns></returns>    

俗话说,一个烈士十独援,众人拾柴火焰高等都说明一个理,有重复多的资源,更增长的累积,都是辅助你走向成功,走向极限的推动力。

searchInfo.FieldName = “TestFeild”;    
searchInfo.FieldValue = “TestValue”;    
   
string file = @”C:\searchInfo.xml”;    
XmlHelper.XmlSerialize(file, searchInfo, typeof(SearchInfo));    
   
SearchInfo info2FromXml = XmlHelper.XmlDeserialize(file, typeof(SearchInfo)) as SearchInfo;    
Console.WriteLine(“{0} : {0}”, info2FromXml.FieldName, info2FromXml.FieldValue);
 

AES
RijndaelManaged加解密、MD5加密、以及RSA非针对如加密顶操作。如果你针对前方的类库介绍文章有趣味,可以参考下面的接连了解。 

 

本篇的公用类库的介绍主题是加密解密的局部,加解密算法包括DES加解密、Base64加解密、

 

厚积薄发,丰富的公用类库积累,助你速开展系统开发(6)

厚积薄发,丰富的公用类库积累,助你快开展系统出(5)

厚积薄发,丰富的公用类库积累,助你快速开展系统出(4) 

厚积薄发,丰富的公用类库积累,助你飞开展系统开发(3)  

厚积薄发,丰富的公用类库积累,助你快开展系统出(2)

厚积薄发,丰富的公用类库积累,助你快速开展系统出(1) 

1、非对如加密、解密、验证辅助类 RSASecurityHelper

 

本身支付了不少共享软件,在共享软件注册方面积累了有协调之经验,其中以不对如加密艺术实现注册码验证的操作,就是内一个比关键的步骤,由于该论理不可逆的特征,采用不对如加密法,较一般的对称加密方法,能够隐藏授权的逻辑,因此有所更好的效能。
这个非对称的解密解密、验证操作,是自所有共享软件里面所以到之授权操作,很早很多情人就这题目问过自家那个频繁,现在奉受大家注册码实现的思路及操作接口,希望大家能当享用代码带来的惠及外,也足以加强自己对知识产权的保障。

相似的话,非对如加密法,结合代码混淆和大称验证,是比好之兑现挂号授权机制的效能。 

贯彻效益 

1)本辅助类主要是用来便于实现无对如加密、解密、验证等有关操作。 

2)非对如加密时有发生RSA、椭圆曲线等,最流行的凡RSA。所谓的非对称,是为她产生半点独密钥,一个名公钥,一个名私钥。公钥是好对外披露之,而私钥是温馨保留的。用公钥加密,必须用私钥解密,反之,用私钥加密必须用公钥解密。所以,我们得以以软件面临保留公钥的始末,这个是好公开的;私钥我们可自己养着。别人用不至私钥,根本算不产生注册码来。 

3)使用辅助类RSASecurityHelper实现登记机制如下:

a. 注册码产生过程:

报信息(包括用户称等信息)—> RSA私钥加密 —> 注册码。

b. 软件验证注册码过程:

注册码 —> RSA公钥验证 —> 验证成功或者失败。

图片 1

图片 2

  

心想事成代码 

1)辅助类提供的计接口如下所示:

/// <summary>    
/// 非对如加密弯的私钥和公钥     
/// </summary>    
/// <param name=”privateKey”>私钥</param>    
/// <param name=”publicKey”>公钥</param>    
public static void GenerateRSAKey(out string privateKey, out string publicKey)   
  
#region 非对如数加密(公钥加密)    
   
/// <summary>    
/// 非对如加密字符串数据,返回加密后的多寡    
/// </summary>    
/// <param name=”publicKey”>公钥</param>    
/// <param name=”originalString”>待加密的字符串</param>    
/// <returns>加密后的数目</returns>    
public static string RSAEncrypt(string publicKey, string originalString)    
   
/// <summary>    
/// 非对如加密字节数组,返回加密后的多少    
/// </summary>    
/// <param name=”publicKey”>公钥</param>    
/// <param name=”originalBytes”>待加密的字节数组</param>    
/// <returns>返回加密后的数量</returns>    
public static string RSAEncrypt(string publicKey, byte[] originalBytes)   
  
#endregion   
  
#region 非对如解密(私钥解密)    
   
/// <summary>    
/// 非对称解密字符串,返回解密后底数额    
/// </summary>    
/// <param name=”privateKey”>私钥</param>    
/// <param name=”encryptedString”>待解密数据</param>    
/// <returns>返回解密后底数据</returns>    
public static string RSADecrypt(string privateKey, string encryptedString)    
   
/// <summary>    
/// 非对称解密字节数组,返回解密后底数    
/// </summary>    
/// <param name=”privateKey”>私钥</param>    
/// <param name=”encryptedBytes”>待解密数据</param>    
/// <returns></returns>    
public static string RSADecrypt(string privateKey, byte[] encryptedBytes)   
  
#endregion   
  
#region 非对如加密签署、验证    
   
/// <summary>    
/// 以非对如加密签定数据    
/// </summary>    
/// <param name=”privateKey”>私钥</param>    
/// <param name=”originalString”>待加密的字符串</param>    
/// <returns>加密后的数目</returns>    
public static string RSAEncrypSignature(string privateKey, string originalString)    
          
/// <summary>    
/// 对私钥加密签名的字符串,使用公钥对那个进行验证    
/// </summary>    
/// <param name=”originalString”>未加密的文本,如机器码</param>    
/// <param name=”encrytedString”>加密后底文书,如注册序列号</param>    
/// <returns>如果证实成功返回True,否则也False</returns>    
public static bool Validate(string originalString, string encrytedString)    
   
/// <summary>    
/// 对私钥加密的字符串,使用公钥对其开展求证    
/// </summary>    
/// <param name=”originalString”>未加密的文书,如机器码</param>    
/// <param name=”encrytedString”>加密后底公文,如注册序列号</param>    
/// <param name=”publicKey”>非对如加密的公钥</param>    
/// <returns>如果证实成功返回True,否则也False</returns>    
public static bool Validate(string originalString, string encrytedString, string publicKey)   
  

#endregion   

2) 辅助类RSASecurityHelper的下例子代码如下所示 

//生成加解密私钥、公钥    
string publicKey = “”;    
string privateKey = “”;    
RSASecurityHelper.GenerateRSAKey(out privateKey, out publicKey);    
   
string originalString = “testdata”;    
string encryptedString = RSASecurityHelper.RSAEncrypt(publicKey, originalString);    
string originalString2 = RSASecurityHelper.RSADecrypt(privateKey, encryptedString);     
if (originalString == originalString2)    
{    
    MessageUtil.ShowTips(“解密完全正确”);    
}    
else   
{    
    MessageUtil.ShowWarning(“解密失败”);    
}    
   
string regcode = RSASecurityHelper.RSAEncrypSignature(privateKey, originalString);    
bool validated = RSASecurityHelper.Validate(originalString, regcode, publicKey);    

MessageUtil.ShowTips( validated ? “验证成功” : “验证失败”);     

3)实际项目动的注册认证代码如下所示。

/// <summary>    
/// 每次程序运行时候,检查用户是否报    
/// </summary>    
/// <returns>如果用户既报, 那么回True, 否则为False</returns>    
public bool CheckRegister()    
{    
    // 先获取用户的注册码进行较    
    string serialNumber = string.Empty; //注册码    
    RegistryKey reg = Registry.CurrentUser.OpenSubKey(UIConstants.SoftwareRegistryKey, true);    
    if (null != reg)    
    {    
        serialNumber = (string)reg.GetValue(“SerialNumber”);    
        Portal.gc.bRegisted = Portal.gc.Register(serialNumber);    
    }    
   
    return Portal.gc.bRegisted;    
}    
   
/// <summary>    
/// 调用非对如加密措施对班号进行求证    
/// </summary>    
/// <param name=”serialNumber”>正确的行列号</param>    
/// <returns>如果成功返回True,否则也False</returns>    
public bool Register(String serialNumber)    
{    
    string hardNumber = HardwareInfoHelper.GetCPUId();    
    return RSASecurityHelper.Validate(hardNumber, serialNumber);    
}    
   
public string GetHardNumber()    
{    
    return HardwareInfoHelper.GetCPUId(); 

}   

 

2、 DES对称加解密、AES
RijndaelManaged加解密、Base64加密解密、MD5加密相当于操作辅助类
EncodeHelper 

实现力量 

 1)本辅助类主要是为此来方便实现DES对称加解密、AES
RijndaelManaged加解密、Base64加密解密、MD5加密顶操作。 

2)本辅助类实现多加以解密处理,可以实现字符串、文件、文件流等加密处理。该加密辅助类汇集各种加密处理逻辑,是一个充分常用、方便回各种加密处理的辅类。

 

贯彻代码 

1)辅助类提供的点子接口如下所示:

/// <summary>    
/// 以默认加密    
/// </summary>    
/// <param name=”strText”></param>    
/// <returns></returns>    
public static string DesEncrypt(string strText)    
   
/// <summary>    
/// 用默认解密    
/// </summary>    
/// <param name=”strText”>解密字符串</param>    
/// <returns></returns>    
public static string DesDecrypt(string strText)    
   
/// <summary>     
/// 加密字符串,注意strEncrKey的长度为8各类    
/// </summary>     
/// <param name=”strText”>待加密字符串</param>     
/// <param name=”strEncrKey”>加密键</param>     
/// <returns></returns>     
public static string DesEncrypt(string strText, string strEncrKey)    
   
/// <summary>     
/// 解密字符串,注意strEncrKey的长短为8员    
/// </summary>     
/// <param name=”strText”>待解密的字符串</param>     
/// <param name=”sDecrKey”>解密键</param>     
/// <returns>解密后底字符串</returns>     
public static string DesDecrypt(string strText, string sDecrKey)    
   
/// <summary>     
/// 加密数据文件,注意strEncrKey的长也8各    
/// </summary>     
/// <param name=”m_InFilePath”>待加密的公文路径</param>     
/// <param name=”m_OutFilePath”>输出文件路径</param>     
/// <param name=”strEncrKey”>加密键</param>     
public static void DesEncrypt(string m_InFilePath, string m_OutFilePath, string strEncrKey)    
   
/// <summary>     
/// 解密数据文件,注意strEncrKey的长短也8各项    
/// </summary>     
/// <param name=”m_InFilePath”>待解密的文书路径</param>     
/// <param name=”m_OutFilePath”>输出路径</param>     
/// <param name=”sDecrKey”>解密键</param>     
public static void DesDecrypt(string m_InFilePath, string m_OutFilePath, string sDecrKey)   
       
#endregion   
  
#region 对如加密算法AES RijndaelManaged加密解密    
   
/// <summary>    
/// 对如加密算法AES RijndaelManaged加密(RijndaelManaged(AES)算法是块式加密算法)    
/// </summary>    
/// <param name=”encryptString”>待加密字符串</param>    
/// <returns>加密结果字符串</returns>    
public static string AES_Encrypt(string encryptString)    
   
/// <summary>    
/// 对如加密算法AES RijndaelManaged加密(RijndaelManaged(AES)算法是块式加密算法)    
/// </summary>    
/// <param name=”encryptString”>待加密字符串</param>    
/// <param name=”encryptKey”>加密密钥,须半斗字符</param>    
/// <returns>加密结果字符串</returns>    
public static string AES_Encrypt(string encryptString, string encryptKey)    
   
/// <summary>    
/// 对如加密算法AES RijndaelManaged解密字符串    
/// </summary>    
/// <param name=”decryptString”>待解密之字符串</param>    
/// <returns>解密成功返回解密后的字符串,失败返源串</returns>    
public static string AES_Decrypt(string decryptString)    
   
/// <summary>    
/// 对如加密算法AES RijndaelManaged解密字符串    
/// </summary>    
/// <param name=”decryptString”>待解密之字符串</param>    
/// <param name=”decryptKey”>解密密钥,和加密密钥相同</param>    
/// <returns>解密成功返回解密后底字符串,失败返回空</returns>    
public static string AES_Decrypt(string decryptString, string decryptKey)    
   
   
/// <summary>    
/// 加密文件流    
/// </summary>    
/// <param name=”fs”>文件流</param>    
/// <returns></returns>    
public static CryptoStream AES_EncryptStrream(FileStream fs, string decryptKey)    
   
/// <summary>    
/// 解密文件流    
/// </summary>    
/// <param name=”fs”>文件流</param>    
/// <returns></returns>    
public static CryptoStream AES_DecryptStream(FileStream fs, string decryptKey)    
   
/// <summary>    
/// 对点名文件加密    
/// </summary>    
/// <param name=”InputFile”>输入文件</param>    
/// <param name=”OutputFile”>输出文件</param>    
/// <returns></returns>    
public static bool AES_EncryptFile(string InputFile, string OutputFile)    
   
/// <summary>    
/// 对点名的文书解压缩    
/// </summary>    
/// <param name=”InputFile”>输入文件</param>    
/// <param name=”OutputFile”>输出文件</param>    
/// <returns></returns>    
public static bool AES_DecryptFile(string InputFile, string OutputFile)   
  
#endregion   
  
#region Base64加密解密    
/// <summary>    
/// Base64凡是一律種使用64基的位置計數法。它使用2之极度酷次方來代表僅可列印的ASCII 字元。    
/// 這使它们可用來作為電子郵件的傳輸編碼。在Base64中的變數使用字元A-Z、a-z和0-9 ,    
/// 這樣共有62個字元,用來作為開始的64個數字,最後兩個用來作為數字的符號在不同之    
/// 系統中要各异。    
/// Base64加密    
/// </summary>    
/// <param name=”str”>Base64方式加密字符串</param>    
/// <returns></returns>    
public static string Base64Encrypt(string str)    
   
/// <summary>    
/// Base64解密字符串    
/// </summary>    
/// <param name=”str”>待解密的字符串</param>    
/// <returns></returns>    
public static string Base64Decrypt(string str)   
  
#endregion   
  
#region MD5加密    
   
/// <summary>     
/// 以MD5加以密字符串    
/// </summary>     
/// <param name=”strText”>待加密的字符串</param>     
/// <returns>MD5加密后底字符串</returns>     
public static string MD5Encrypt(string strText)    
   
/// <summary>    
/// 使用MD5加密的Hash表    
/// </summary>    
/// <param name=”input”>待加密字符串</param>    
/// <returns></returns>    
public static string MD5EncryptHash(String input)    
   
/// <summary>    
/// 用Md5加密为16进制字符串    
/// </summary>    
/// <param name=”input”>待加密字符串</param>    
/// <returns></returns>    
public static string MD5EncryptHashHex(String input)    
   
/// <summary>    
/// MD5 三坏加密算法.计算过程: (QQ以)    
/// 1. 验证码转为大写    
/// 2. 拿密码使用此主意开展三破加密后,与验证码进行叠加    
/// 3. 然后用叠加后的情还MD5一下,得到终极验证码的值    
/// </summary>    
/// <param name=”s”></param>    
/// <returns></returns>    
public static string EncyptMD5_3_16(string s)   
  
#endregion    
   
/// <summary>    
/// SHA256函数    
/// </summary>    
/// <param name=”str”>原始字符串</param>    
/// <returns>SHA256结果(返回长度也44字节之字符串)</returns>    
public static string SHA256(string str)    
   
/// <summary>    
/// 加密字符串(使用MD5+Base64混合加密)    
/// </summary>    
/// <param name=”input”>待加密的字符串</param>    
/// <returns></returns>    
public static string EncryptString(string input)    
   
/// <summary>    
/// 解密加过密的字符串(使用MD5+Base64混合加密)    
/// </summary>    
/// <param name=”input”>待解密的字符串</param>    
/// <param name=”throwException”>解密失败是否丢大</param>    
/// <returns></returns>    
public static string DecryptString(string input, bool throwException) 

 

2) 辅助类EncodeHelper的使用例子代码如下所示 

/// <summary>    
/// 对字符串加密    
/// </summary>    
/// <returns></returns>    
private string EncodePassword(string passwordText)    
{    
    return EncodeHelper.MD5Encrypt(passwordText);    

}  

 

private void btnEncrypt_Click(object sender, EventArgs e)    
{    
    string original = “测试加密字符串”;    
    Console.WriteLine(“original:” + original);    
   
    string encrypt = EncodeHelper.SHA256(original);    
    Console.WriteLine(“EncodeHelper.SHA256” + encrypt);    
   
    //DES加解密    
    encrypt = EncodeHelper.DesEncrypt(original);    
    Console.WriteLine(“EncodeHelper.DesEncrypt:” + encrypt);    
   
    string decrypt = EncodeHelper.DesDecrypt(encrypt);    
    Console.WriteLine(“EncodeHelper.DesDecrypt:” + decrypt);    
   
    //MD5加密    
    encrypt = EncodeHelper.MD5Encrypt(original);    
    Console.WriteLine(“EncodeHelper.MD5Encrypt:” + encrypt);    
    encrypt = EncodeHelper.MD5EncryptHash(original);    
    Console.WriteLine(“EncodeHelper.MD5EncryptHash:” + encrypt);    
    encrypt = EncodeHelper.MD5EncryptHashHex(original);    
    Console.WriteLine(“EncodeHelper.MD5EncryptHashHex” + encrypt);    
    encrypt = EncodeHelper.EncyptMD5_3_16(original);    
    Console.WriteLine(“EncodeHelper.EncyptMD5_3_16:” + encrypt);    
   
    //Base64加解密    
    encrypt = EncodeHelper.Base64Encrypt(original);    
    Console.WriteLine(“EncodeHelper.Base64Encrypt” + encrypt);    
    decrypt = EncodeHelper.Base64Encrypt(encrypt);    
    Console.WriteLine(“EncodeHelper.Base64Encrypt” + decrypt);    
   
    encrypt = EncodeHelper.AES_Encrypt(original);    
    Console.WriteLine(“EncodeHelper.AES_Encrypt” + encrypt);    
    decrypt = EncodeHelper.AES_Decrypt(encrypt);    

    Console.WriteLine(“EncodeHelper.AES_Decrypt” + decrypt);   

 

图片 3 

3、 MD5各种长度加密字符、验证MD5等操作辅助类 MD5Util 

落实效益 

 1)本辅助类主要是故来便宜实现MD5各种长度加密字符、验证MD5等操作。 

 2)MD5即Message-Digest Algorithm 5(信息-摘要算法
5),用于确保信息传输完整一致。是计算机广泛应用的散列算法有(又译摘要算法、哈希算法)。 

 3)MD5已经广泛采取以吗文件传输提供一定的可靠性方面。例如,服务器预先提供一个MD5校验和,用户下充斥了文件从此,用MD5算法计算下载文件之MD5校验和,然后经过检查及时半单校验和是否同样,就能断定下载的文本是否出错

 

贯彻代码 

1)辅助类提供的方式接口如下所示:

/// <summary>    
/// 获得32位的MD5加密    
/// </summary>    
public static string GetMD5_32(string input)    
   
/// <summary>    
/// 获得16位的MD5加密    
/// </summary>    
public static string GetMD5_16(string input)    
        
/// <summary>    
/// 获得8位的MD5加密    
/// </summary>    
public static string GetMD5_8(string input)    
   
/// <summary>    
/// 获得4位的MD5加密    
/// </summary>    
public static string GetMD5_4(string input)    
   
/// <summary>    
/// 添加MD5的前缀,便于检查有管篡改    
/// </summary>    
public static string AddMD5Profix(string input)    
   
/// <summary>    
/// 移除MD5的前缀    
/// </summary>    
public static string RemoveMD5Profix(string input)    
   
/// <summary>    
/// 验证MD5面前缀处理的字符串有无被篡改    
/// </summary>    
public static bool ValidateValue(string input)   
  
#region MD5签署验证    
        
/// <summary>    
/// 对加文件路径的文本加上标签    
/// </summary>    
/// <param name=”path”>要加密的文件之门道</param>    
/// <returns>标签的值</returns>    
public static bool AddMD5(string path)    
   
/// <summary>    
/// 对吃一定路的文件进行说明,如果同返回True,否则回False    
/// </summary>    
/// <param name=”path”></param>    
/// <returns>是否加了标签或者否标签值与内容值一致</returns>    

public static bool CheckMD5(string path)    

2) 辅助类

MD5Util 的应用例子代码如下所示 

 

//为文件增加MD5编码标签,然后验证是否给修改    
string file = @”c:\test.xls”;    
bool flag2 = MD5Util.AddMD5(file);    
Console.WriteLine(flag2);    
   
//对深受得路的文本进行求证,如果同样返回True,否则回False    
bool flag3 = MD5Util.CheckMD5(file);    

Console.WriteLine(flag3);  

 

4、基于Base64的加密编码辅助类 Base64Util

落实力量 

 1)本辅助类主要是用来好实现冲Base64的加密编码。 

 2)Base64被定义为:Base64内容传送编码为设计用来将自由序列的8号字节描述为平种是为人一直识别的样式。Base64编码一般在电子邮件中得以查看到,打开一封Email,查看其原始信息(您可透过收到、导出该邮件之所以文本编辑器查看)。加密凡是必然的,但是加密的目的不是叫用户发送非常安全的Email。这种加密方法要就是“防君子不防小人”。即达到一眼望去了看无发内容即可。 

 3)采用Base64编码不仅于简略,同时为具不可读性,即所编码的多少未会见于人之所以眼睛所一直看看。

 

心想事成代码 

1)辅助类提供的法门接口如下所示:

/// <summary>    
/// 用默认的密码表加密字符串    
/// </summary>    
/// <param name=”input”>待加密字符串</param>    
/// <returns></returns>    
public static string Encrypt(string input)    
   
/// <summary>    
/// 用默认的密码表解密字符串    
/// </summary>    
/// <param name=”input”>待解密字符串</param>    
/// <returns></returns>    
public static string Decrypt(string input)    
   
/// <summary>    
/// 获取具有专业的Base64密码表的加密类    
/// </summary>    
/// <returns></returns>    

public static Base64Util GetStandardBase64()
   

 

2) 辅助类Base64Util的采用例子代码如下所示 

private void btnBase64_Click(object sender, EventArgs e)    
{    
    string original = “这是一个测试的Base64加密字符串”;    
    string encrypt = Base64Util.Encrypt(original);    
    Console.WriteLine(encrypt);//输出内容:6L*Z5pi_5LiA5Liq5rWL6K*V55qEQmFzZTY05Yqg5b*G5b2X56ym5Liy    
   
    string decrypt = Base64Util.Decrypt(encrypt);    
    Debug.Assert(original == decrypt);//验证等    

}  

5、QQ密码加密操作辅助类 QQEncryptUtil

落实效益 

 1)本辅助类主要是用来好实现QQ密码加密操作。 
 2)在QQ的过多效网页采集数据,需要输入用户账号、密码,其中密码是内需进行加密操作的,一般采用js脚本实现,这里拿她转化为C#的代码操作,其实呢就算是把密码和验证码通过3次等MD5加密兑现之。 

图片 4 

实现代码 

1)辅助类提供的章程接口如下所示:

/// <summary>    
/// QQ根据密码和验证码对数码进行加密    
/// </summary>    
/// <param name=”password”>原始密码</param>    
/// <param name=”verifyCode”>验证码</param>    
/// <returns></returns>    

public static string EncodePasswordWithVerifyCode(string password, string verifyCode)   

 

2) 辅助类QQEncryptUtil的应用例子代码如下所示 

private bool CheckLogin()    
{    
    HttpHelper httpHelper = new HttpHelper();    
    string refUrl = “http://ui.ptlogin2.qq.com/cgi-bin/login?appid=3000801&s\_url=http%3A%2F%2Fqun.qq.com%2Fgod%2Fsucc.htm&f\_url=loginerroralert&lang=2052&bgcolor=ffffff&style=1&low\_login=1&link\_target=blank&target=self&hide\_title\_bar=1&dummy=1”;    
   
    string verifyCode = this.txtVerify.Text;    
    string postData = string.Format(“u={0}&p={1}&verifycode={2}&aid=3000801&u1=http%3A%2F%2Fqun.qq.com%2Fgod%2Fsucc.htm&h=1&ptredirect=0&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert”,    
        this.txtUsername.Text, QQEncryptUtil.EncodePasswordWithVerifyCode(this.txtPassword.Text, verifyCode), verifyCode);    
   
    string result = httpHelper.GetHtml(“http://ptlogin2.qq.com/login?” + postData, Portal.gc.cookieQun, refUrl);    
    string errorTxt = result;    
    bool isLogin = result.Contains(“登录成功!”);    
    return isLogin;    

}
  

CHM帮助文档持续创新中,统一下载地址是: http://www.iqidi.com/download/commonshelp.rar 

行公用类库DLL+XML注释文件下充斥地址是:http://files.cnblogs.com/wuhuacong/WHC.OrderWater.Commons.rar 

俺们被程序输入指令执行参数first -o outfile.txt –compile second
\errors=errors.txt third fourth –test = “the value”
fifth,得到的出口结果如下所示。

厚积薄发,丰富的公用类库积累,助你快速开展系统开发(7)

6、各种输入格式验证辅助类 ValidateUtil。  

实现力量

本篇继续承整治优化已有的联名用类库,并持续发表随笔介绍公用类库的接口方法以及详细使用操作,力求为好继续优化,积攒更增长的公用类库资源,加深了解的以,也受大家展现公用类库好的面。

2、序列化和倒序列化操作辅助类 Serializer。  

 

string src = CRegex.GetImgSrc(img);    
bool isurl = ValidateUtil.IsValidURL(src);    
if (isurl)    
{    
    continue;    

private void btnTestEnum_Click(object sender, EventArgs e)    
{    
    string desc = EnumHelper.GetDescription(typeof(SqlOperator), SqlOperator.Like);    
    MessageUtil.ShowTips(string.Format(“SqlOperator.Like:{0}”, desc));    
   
    SortedList list = EnumHelper.GetStatus(typeof(SqlOperator));    
    StringBuilder sb = new StringBuilder();    
    foreach (int key in list.Keys)    
    {    
        sb.AppendFormat(“key:{0} Value:{1} \r\n”, key, list[key]);    
    }    
    MessageUtil.ShowTips(sb.ToString());    
}
  

#region 各种格式的序列化操作    
/// <summary>    
/// 序列化对象到第二前进制字节数组    
/// </summary>    
/// <param name=”obj”>待序列化的目标</param>    
/// <returns></returns>    
public static byte[] SerializeToBinary(object obj)    
   
/// <summary>    
/// 序列化对象到指定的文本被    
/// </summary>    
/// <param name=”obj”>待序列化的靶子</param>    
/// <param name=”path”>文件路径</param>    
/// <param name=”mode”>文件打开方式</param>    
public static void SerializeToBinary(object obj, string path, FileMode mode)    
   
/// <summary>    
/// 序列号对象及文件被,创建一个新文件    
/// </summary>    
/// <param name=”obj”>待序列化的目标</param>    
/// <param name=”path”>文件路径</param>    
public static void SerializeToBinary(object obj, string path)    
   
/// <summary>    
/// 序列化对象及Soap字符串中    
/// </summary>    
/// <param name=”obj”>待序列化的目标</param>    
/// <returns></returns>    
public static string SerializeToSoap(object obj)    
   
/// <summary>    
/// 序列化对象及Soap字符串中,并保存到文件    
/// </summary>    
/// <param name=”obj”>待序列化的靶子</param>    
/// <param name=”path”>文件路径</param>    
/// <param name=”mode”>文件打开方式</param>    
public static void SerializeToSoap(object obj, string path, FileMode mode)    
   
/// <summary>    
/// 序列化对象及Soap字符串中,并保存及文件    
/// </summary>    
/// <param name=”obj”>待序列化的目标</param>    
/// <param name=”path”>文件路径</param>    
public static void SerializeToSoap(object obj, string path)    
   
/// <summary>    
/// 序列化对象及XML字符串中    
/// </summary>    
/// <param name=”obj”>待序列化的对象</param>    
/// <returns></returns>    
public static string SerializeToXml(object obj)    
   
/// <summary>    
/// 序列化对象及XML字符串,并保留及文件被    
/// </summary>    
/// <param name=”obj”>待序列化的目标</param>    
/// <param name=”path”>文件路径</param>    
/// <param name=”mode”>文件打开方式</param>    
public static void SerializeToXmlFile(object obj, string path, FileMode mode)    
   
/// <summary>    
/// 序列化对象及XML字符串,并保留至文件中    
/// </summary>    
/// <param name=”obj”>待序列化的对象</param>    
/// <param name=”path”>文件路径</param>    
public static void SerializeToXmlFile(object obj, string path)   
  
#endregion    
   
   
/// <summary>    
/// 于指定的文本被倒序列化到现实的靶子    
/// </summary>    
/// <param name=”type”>对象的品类</param>    
/// <param name=”path”>文件路径</param>    
/// <returns></returns>    
public static object DeserializeFromXmlFile(Type type, string path)    
   
/// <summary>    
/// 从指定的XML字符串中倒序列化到具体的靶子    
/// </summary>    
/// <param name=”type”>对象的种</param>    
/// <param name=”s”>XML字符串</param>    
/// <returns></returns>    
public static object DeserializeFromXml(Type type, string s)    
   
/// <summary>    
/// 从指定的Soap协议字符串中倒序列化到实际的目标    
/// </summary>    
/// <param name=”type”>对象的档次</param>    
/// <param name=”s”>Soap协议字符串</param>    
/// <returns></returns>    
public static object DeserializeFromSoap(Type type, string s)    
   
/// <summary>    
/// 从指定的老二向前制字节数组中倒序列化到现实的目标    
/// </summary>    
/// <param name=”type”>对象的品种</param>    
/// <param name=”bytes”>二进制字节数组</param>    
/// <returns></returns>    
public static object DeserializeFromBinary(Type type, byte[] bytes)    
   
/// <summary>    
/// 从指定的文本到底,以第二迈入制字节数组中倒序列化到具体的对象    
/// </summary>    
/// <param name=”type”>对象的档次</param>    
/// <param name=”bytes”>二上制字节数组存储的文件</param>    
/// <returns></returns>    
public static object DeserializeFromBinary(Type type, string path)    
   
/// <summary>    
/// 获取对象的字节数组大小    
/// </summary>    
/// <param name=”o”>对象</param>    
/// <returns></returns>    
public static long GetByteSize(object o)    
   
/// <summary>    
/// 克隆一个目标    
/// </summary>    
/// <param name=”o”>对象</param>    
/// <returns></returns>    
public static object Clone(object o)     
    

5、身份证相关操作辅助类 IDCardHelper。  

string[] qunList = lineString.Split(new char[] { ‘,’, ‘;’, ‘ ‘ });    
foreach (string qunNumber in qunList)    
{    
    if (!string.IsNullOrEmpty(qunNumber) && ValidateUtil.IsNumber(qunNumber))    
    {   
        #region 对每个码进行询问    
        if (!QunDict.ContainsKey(qunNumber))    
        {    
            this.lstItems.Invoke(new MethodInvoker(delegate()    
            {    
                this.lstItems.Items.Add(qunNumber);    
                this.lstItems.Refresh();    
            }));    
   
            QunDict.Add(qunNumber, qunNumber);    
        }    
        else   
        {    
            skipCount++;    
        }    
        #endregion    
    }    

public static CommandArgs Parse(string[] args)  

3、实现命令行解析的常用操作的辅助类 CommandLine。  

兑现代码

本篇继续持续整治优化已部分联名用类库,并蝉联上随笔介绍公用类库的接口方法和详细使用操作,力求给自己连续优化,积攒更增长的公用类库资源,加深了解的还要,也吃大家呈现公用类库好的面。

#region 用户名密码格式    
   
/// <summary>    
/// 返回字符串真实长度, 1独汉字长度也2    
/// </summary>    
/// <returns>字符长度</returns>    
public static int GetStringLength(string stringValue)    
   
/// <summary>    
/// 检测用户名格式是否管用    
/// </summary>    
/// <param name=”userName”>用户名</param>    
/// <returns></returns>    
public static bool IsValidUserName(string userName)    
   
/// <summary>    
/// 密码中    
/// </summary>    
/// <param name=”password”>密码字符串</param>    
/// <returns></returns>    
public static bool IsValidPassword(string password)   
  
#endregion   
  
#region 数字字符串检查    
   
/// <summary>    
/// int有效性    
/// </summary>    
static public bool IsValidInt(string val)    
   
/// <summary>    
/// 是否数字字符串    
/// </summary>    
/// <param name=”inputData”>输入字符串</param>    
/// <returns></returns>    
public static bool IsNumeric(string inputData)    
   
/// <summary>    
/// 是否数字字符串    
/// </summary>    
/// <param name=”inputData”>输入字符串</param>    
/// <returns></returns>    
public static bool IsNumber(string inputData)    
   
/// <summary>    
/// 是否数字字符串 可带来刚负号    
/// </summary>    
/// <param name=”inputData”>输入字符串</param>    
/// <returns></returns>    
public static bool IsNumberSign(string inputData)    
   
/// <summary>    
/// 是否是浮点数    
/// </summary>    
/// <param name=”inputData”>输入字符串</param>    
/// <returns></returns>    
public static bool IsDecimal(string inputData)    
   
/// <summary>    
/// 是否是浮点数 可带来刚负号    
/// </summary>    
/// <param name=”inputData”>输入字符串</param>    
/// <returns></returns>    
public static bool IsDecimalSign(string inputData)   
  
#endregion   
  
#region 中文检测    
   
/// <summary>    
/// 检测是否来中文字符    
/// </summary>    
public static bool IsHasCHZN(string inputData)    
   
/// <summary>     
/// 检测含有中文字符串的骨子里尺寸     
/// </summary>     
/// <param name=”str”>字符串</param>     
public static int GetCHZNLength(string inputData)   
  
#endregion   
  
#region 常用格式    
   
/// <summary>    
/// 验证身份证是否合法  15 和  18各类两种    
/// </summary>    
/// <param name=”idCard”>要说明的身份证</param>    
public static bool IsIdCard(string idCard)    
   
/// <summary>    
/// 是否是邮件地址    
/// </summary>    
/// <param name=”inputData”>输入字符串</param>    
/// <returns></returns>    
public static bool IsEmail(string inputData)    
   
/// <summary>    
/// 邮编有效性    
/// </summary>    
public static bool IsValidZip(string zip)    
   
/// <summary>    
/// 固定电话中    
/// </summary>    
public static bool IsValidPhone(string phone)    
   
/// <summary>    
/// 手机中    
/// </summary>    
public static bool IsValidMobile(string mobile)    
   
/// <summary>    
/// 电话中(固话和手机 )    
/// </summary>    
public static bool IsValidPhoneAndMobile(string number)    
   
/// <summary>    
/// Url有效性    
/// </summary>    
static public bool IsValidURL(string url)    
   
/// <summary>    
/// IP有效性    
/// </summary>    
public static bool IsValidIP(string ip)    
   
/// <summary>    
/// domain 有效性    
/// </summary>    
/// <param name=”host”>域名</param>    
/// <returns></returns>    
public static bool IsValidDomain(string host)    
   
/// <summary>    
/// 判断是否也base64字符串    
/// </summary>    
public static bool IsBase64String(string str)    
   
/// <summary>    
/// 验证字符串是否是GUID    
/// </summary>    
/// <param name=”guid”>字符串</param>    
/// <returns></returns>    
public static bool IsGuid(string guid)   
  
#endregion   
  
#region 日期检查    
   
/// <summary>    
/// 判断输入的字符是否为日期    
/// </summary>    
public static bool IsDate(string strValue)    
   
/// <summary>    
/// 判断输入的字符是否为日期,如2004-07-12 14:25|||1900-01-01 00:00|||9999-12-31 23:59    
/// </summary>    
public static bool IsDateHourMinute(string strValue)   
  
#endregion   
  
#region 其他    
   
/// <summary>    
/// 检查字符串最可怜长,返回指定长度的差    
/// </summary>    
/// <param name=”sqlInput”>输入字符串</param>    
/// <param name=”maxLength”>最特别长</param>    
/// <returns></returns>             
public static string CheckMathLength(string inputData, int maxLength)    
   
/// <summary>    
/// 转换成 HTML code    
/// </summary>    
public static string Encode(string str)    
   
/// <summary>    
///解析html成 普通文书    
/// </summary>    

public static DateTime GetBirthday(string id)    

落实代码

    {    
        public static string Execute()    
        {    
            string result = string.Empty;    
            result += “使用SerializeUtil序列化及反序列化的辅助类:” + “\r\n”;    
                
            Person person = new Person();    
            person.Name = “wuhuacong”;    
            person.Age = 20;    
                
            byte[] bytes = SerializeUtil.SerializeToBinary(person);    
            Person person2 = SerializeUtil.DeserializeFromBinary(typeof (Person), bytes) as Person;    
            result += ReflectionUtil.GetProperties(person2) + “\r\n”;    
                
            string xml = SerializeUtil.SerializeToXml(person);    
            Person person3 = SerializeUtil.DeserializeFromXml(typeof (Person), xml) as Person;    
            result += “person3:\r\n” + ReflectionUtil.GetProperties(person3) + “\r\n”;    
                
            result += “SerializeUtil.GetByteSize(person3):” + SerializeUtil.GetByteSize(person3) + “\r\n”;    
                
            Person person4 = SerializeUtil.Clone(person3) as Person;    
            result += “person4:\r\n” + ReflectionUtil.GetProperties(person4) + “\r\n”;    
                
            result += “Util.AreObjectsEqual(person3, person4):” + Util.AreObjectsEqual(person3, person4)+ “\r\n”;    
                
            SerializeUtil.SerializeToXmlFile(person3, Util.CurrentPath + “person3.xml”, FileMode.Create);    
            Person person5 = SerializeUtil.DeserializeFromXmlFile(typeof (Person), Util.CurrentPath + “person3.xml”) as Person;    
            result += “person5:\r\n” + ReflectionUtil.GetProperties(person5) + “\r\n\r\n”;    
                
            result += SerializeUtil.ReadFile(Util.CurrentPath + “person3.xml”) + “\r\n\r\n”;    
            result += SerializeUtil.ReadFileFromEmbedded(“TestUtilities.EmbedFile.xml”) + “\r\n\r\n”;    
   
            return result;    
        }    
    }  

public void Save()   

1)辅助类提供的办法接口如下所示: 

 

/// <summary>    
/// 包含解析的一声令下执行参数。这包括个别单列表,一个凡是参数对准,一个凡是单独的参数。    
/// </summary>    
public class CommandArgs    
{    
    /// <summary>    
    /// 返回参数/参数值的键值字典    
    /// </summary>    
    public Dictionary<string, string> ArgPairs    
   
    /// <summary>    
    /// 返回独立的参数列表    
    /// </summary>    
    public List<string> Params    

 

 SearchInfo searchInfo = new SearchInfo();    

2)序列化是靠一个对象的实例可以让封存,保存成一个亚上制串或者XML等格式字符串。反序列化这是起这些内容遭还原也一个目标实例的操作。 

2)序列化是负一个目标的实例可以叫保留,保存成一个次之上制串或者XML等格式字符串。反序列化这是起这些情节被尚原也一个靶实例的操作。 

3)要兑现目标的序列化,首先要确保该对象可以序列化。而且,序列化只是将目标的特性进行中用的保存,对于目标的一对措施则无法兑现序列化的。实现一个接近可序列化的尽简便易行的办法就是增加Serializable属性标记类。 

1)本辅助类主要是用来便于实现命令行解析的常用操作,命令行的分析在过剩景下是老必要之,如自行并带动参数启动的操作相当。 

3)枚举可以说凡是同一种强类型的目标操作,比由使古怪字符、或者数值等情节,具有强类型,编译时刻就是规定等特征,在实际支出中,我们还得利用中文枚举来好实现各种操作。 

}
  

ds.WriteXml(@”C:\ds.xml”);   

事例涉及敏感信息,自己测试下即可,呵呵
   

/// <summary>    
/// 应用程序的主入口点。    
/// </summary>    
[STAThread]    
static void Main(string[] args)    
{    
    //参数字符串:first -o outfile.txt –compile second \errors=errors.txt third fourth –test = “the value” fifth    
   
    CommandArgs objArgs = CommandLine.Parse(args);    
        
    //键值参数列表,得到输出    
    //o:outfile.txt    
    //compile:second    
    //errors:errors.txt    
    //test:the value    
    foreach (string str in objArgs.ArgPairs.Keys)    
    {    
        Debug.WriteLine(string.Format(“{0}:{1}”, str, objArgs.ArgPairs[str]));    
    }    
   
   
    //非键值参数列表:得到first third fourth fifth 共四只字符串    
    foreach (string str in objArgs.Params)    
    {    
        Debug.WriteLine(str);    
    }    
   
    Application.EnableVisualStyles();    
    Application.SetCompatibleTextRenderingDefault(false);    
    Application.Run(new Form1());    

实现代码

}   

厚积薄发,丰富的公用类库积累,助你速开展系统出(8)—-非本着如加密、BASE64加密、MD5等常用加密处理 厚积薄发,丰富的公用类库积累,助你飞开展系统开发(7)—–声音播放、硬件信息、键盘模拟与钩子、鼠标模拟和钩子等设备相关 
厚积薄发,丰富的公用类库积累,助你快速开展系统开发(6)—-全屏截图、图标获取、图片打印、页面预览截屏、图片复杂操作相当 厚积薄发,丰富的公用类库积累,助你快开展系统出(5)—-热键、多线程、窗体动画冻结等窗体操作 厚积薄发,丰富的公用类库积累,助你速开展系统出(4)—-CSV、Excel、INI文件、独立存储等公事有关 厚积薄发,丰富的公用类库积累,助你速开展系统开发(3)—-数据库相关操作 厚积薄发,丰富的公用类库积累,助你速开展系统出(2)—-常用操作 厚积薄发,丰富的公用类库积累,助你快开展系统开发(1)—-开篇总结

2)格式验证包括各种数字格式、中文检测、身份证、邮件、邮政编码、固定电话、手机、URL地址、IP地址、日期格式、GUID、Base64编码等格式验证。 

兑现效益

2)辅助类XmlHelper的利用例子代码如下所示 

3)辅助类XmlHelper操作节点的例证代码如下所示。 

心想事成力量

1)辅助类提供的计接口如下所示: 

XML序列化文件如下所示,并能透过该文件反序列化到目标实例中。 

CHM帮助文档持续创新中,统一下载地址是: http://www.iqidi.com/download/commonshelp.rar 

o:outfile.txt    
compile:second    
errors:errors.txt    
test:the value    
first    
third    
fourth    
fifth  

3)辅助类使用例子代码2之类所示 

2)辅助类的使用例子代码如下所示 

1)辅助类提供的章程接口如下所示: 

3)本辅助类采用各种经过认证的正则表达式进行匹配,具有便捷、准确的性状,请放心使用。 

public static string Decode(string str)  

兑现效益

 

俗话说,一个好汉十独援,众人拾柴火焰高等还证明一个理,有再多之资源,更增长的累,都是扶你走向成功,走向极限的推动力。

本序列化和倒序列化操作,提供二进制、XML格式、Soap格式等又艺术的操作,方便对目标实例进行各种序列化操作还是对各种格式文件的反序列化操作。 

本篇的公用类库的介绍主题是次开发中不时因此到之各种格式转换或者数印证的辅助类,内容范围或于宽泛,包括XML操作、序列化及反序列化操作、命令行解析,枚举对象操作,数据格式验证等等,不过还是不行多得、好用底援手类。

1)辅助类提供的方接口如下所示: 

1)辅助类提供的道接口如下所示: 

2)命令执行参数。这包个别只列表,一个凡是参数对,一个凡独的参数。 

落实力量

1)本辅助类主要是故来便宜实现序列化合反序列化操作。 

风行公用类库DLL+XML注释文件下充斥地址是:http://files.cnblogs.com/wuhuacong/WHC.OrderWater.Commons.rar 

落实代码

 

1、序列化、反序列化、节点等操作类辅助类 XmlHelper。  

1)本辅助类主要是故来便宜实现身份证的各种相关操作,验证身份证、15及18员身份证号码转换、提取省份、县买、地区瓜分、出生年月及看清孩子齐操作。 

1)本辅助类主要是为此来便于实现各种输入格式验证操作。 

document.documentElement来拜会它,它就是是所有节点树的根节点(ROOT)。 

1)本辅助类主要是为此来便于实现XML序列化、反序列化、节点等操作。 

 

实现代码

/// <summary>    
/// 解析传递的授命执行参数,并赶回结果及一个CommandArgs对象。    
/// 假要命令行格式: CMD [param] [[-|–|\]<arg>[[=]<value>]] [param]    
/// 例如:cmd first -o outfile.txt –compile second \errors=errors.txt third fourth –test = “the value” fifth    
/// </summary>    
/// <param name=”args”>命令执行参数数组</param>    
/// <returns>包含转换后底命令行对象CommandArgs</returns>   

2)枚举操作,涉及字符串和枚举对象互转、获取枚举成员、获取名称及价值集合、获取枚举值、枚举描述等操作。 

 public class TestSerializeUtil    

2)辅助类的使例子代码如下所示 

实现代码

图片 5 

}  

4)DOM(文档对象模型)把层次中之各级一个靶都号称节点(NODE),以HTML超文本标记语言也例:整个文档的一个绝望就是<html>,在DOM中好使

/// <summary>    
/// 绑定身份证类别的名    
/// </summary>    
/// <param name=”cb”>ComboBox控件</param>    
public static void InitIdType(ComboBox cb)    
   
/// <summary>    
/// 获取身份证类别的名称(居民身份证、军官证、士兵证、军官离退休证、境外人员身份证明、外交人员身份证明)    
/// </summary>    
/// <returns></returns>    
public static DataTable CreateIDType()    
   
/// <summary>    
/// 验证身份证结果    
/// </summary>    
/// <param name=”idcard”>身份证号码</param>    
/// <returns>正确的时节回来string.Empty</returns>    
public static string Validate(string idcard)    
   
/// <summary>    
/// 15各身份证明号码转化成18个用来编码    
/// </summary>    
/// <param name=”idcard”>15位之身份证号码</param>    
/// <returns></returns>    
public static string IdCard15To18(string idcard)    
   
/// <summary>    
/// 获取身份证对应省份的剪切    
/// </summary>    
/// <param name=”id”>身份证</param>    
/// <returns>头两位+4个0</returns>    
public static string GetProvince(string id)    
   
/// <summary>    
/// 获取身份证对许县买之分开    
/// </summary>    
/// <param name=”id”>身份证</param>    
/// <returns>头4位+2个0</returns>    
public static string GetCity(string id)    
   
/// <summary>    
/// 获取身份证对应地区的划分    
/// </summary>    
/// <param name=”id”>身份证</param>    
/// <returns>头6位</returns>    
public static string GetArea(string id)    
   
/// <summary>    
/// 因身份证判断是否男女    
/// </summary>    
/// <param name=”id”>身份证号码</param>    
/// <returns>返回”男”或者”女”</returns>    
public static string GetSexName(string id)    
   
/// <summary>    
/// 因身份证取出生年月    
/// </summary>    
/// <param name=”id”>身份证号码</param>    
/// <returns>出生年月</returns>    

贯彻效益

 

3)输出结果如下所示

2)辅助类的采用例子代码如下所示 

public static SortedList GetStatus(System.Type t)
   

4、枚举操作辅助类 EnumHelper。  

1)本辅助类主要是用来好实现枚举的各种有关操作。 

//bookstore.xml文件内容    
/*   
<?xml version=”1.0″ encoding=”gb2312″?>   
<bookstore>   
<book genre=”fantasy” ISBN=”2-3631-4″>   
    <title>Oberon’s Legacy</title>   
    <author>Corets, Eva</author>   
    <price>5.95</price>   
</book>   
</bookstore>   
*/   
file = @”c:\bookstore.xml”;    
XmlHelper helper = new XmlHelper(file);    
string value = helper.Read(“bookstore/book”, “genre”);    
Console.WriteLine(value);//fantasy    
   
value = helper.Read(“bookstore/book”, “ISBN”);    
Console.WriteLine(value);//2-3631-4    
   
value = helper.GetElementData(“bookstore/book”, “title”);    
Console.WriteLine(value);//Oberon’s Legacy       
   
XmlElement element = helper.GetElement(“bookstore/book”, “title”);    
element.InnerText = “伍华聪”;    
   
DataSet ds = helper.GetData(“bookstore/book”);    

2)辅助类的以例子代码如下所示 

2)辅助类的使例子代码如下所示 

3)参数是概念为键/值对。参数键必须以’-‘,
‘–‘或者’\’开始,在参数和价值内要出一个空格或字符’=’。多余的空格将于忽视。参数后总得随着一个价值,如果没有点名值,那么字符串’true’将被指定。如果值有空格,必须下对引号来含有字符,否则字符不克让科学解析。

/// <summary>    
/// 构造函数    
/// </summary>    
/// <param name=”XmlFile”>XML文件路径</param>    
public XmlHelper(string XmlFile)   
  
#region 静态方法    
   
/// <summary>    
/// 其次上前制序列化    
/// </summary>    
/// <param name=”path”>文件路径</param>    
/// <param name=”obj”>对象实例</param>    
/// <returns></returns>    
public static bool Serialize(string path, object obj)    
   
/// <summary>    
/// XML序列化    
/// </summary>    
/// <param name=”path”>文件路径</param>    
/// <param name=”obj”>对象实例</param>    
/// <returns></returns>    
public static bool XmlSerialize(string path, object obj, Type type)    
   
/// <summary>    
/// 二进制反序列化    
/// </summary>    
/// <param name=”path”>文件路径</param>    
/// <returns></returns>    
public static object Deserialize(string path)    
   
/// <summary>    
/// XML反序列化    
/// </summary>    
/// <param name=”path”>文件路径</param>    
/// <param name=”type”>对象类型</param>    
/// <returns></returns>    
public static object XmlDeserialize(string path, Type type)   
  
#endregion   
  
#region 公用方法    
   
/// <summary>    
/// 获取指定节点下面的XML子节点    
/// </summary>    
/// <param name=”XmlPathNode”>XML节点</param>    
/// <returns></returns>    
public XmlNodeList Read(string XmlPathNode)    
   
/// <summary>    
/// 读取节点性内容    
/// </summary>    
/// <param name=”XmlPathNode”>XML节点</param>    
/// <param name=”Attrib”>节点性</param>    
/// <returns></returns>    
public string Read(string XmlPathNode, string Attrib)    
   
/// <summary>    
/// 获取元素节点目标    
/// </summary>    
/// <param name=”XmlPathNode”>XML节点</param>    
/// <param name=”elementName”>元素节点名称</param>    
/// <returns></returns>    
public XmlElement GetElement(string XmlPathNode, string elementName)    
   
/// <summary>    
/// 获取元素节点的值    
/// </summary>    
/// <param name=”XmlPathNode”>XML节点</param>    
/// <param name=”elementName”>元素节点名称</param>    
/// <returns></returns>    
public string GetElementData(string XmlPathNode, string elementName)    
   
/// <summary>    
/// 获取节点下的DataSet    
/// </summary>    
/// <param name=”XmlPathNode”>XML节点</param>    
/// <returns></returns>    
public DataSet GetData(string XmlPathNode)    
   
/// <summary>    
/// 替换某节点的始末    
/// </summary>    
/// <param name=”XmlPathNode”>XML节点</param>    
/// <param name=”Content”>节点内容</param>    
public void Replace(string XmlPathNode, string Content)    
   
/// <summary>    
/// 删除节点    
/// </summary>    
/// <param name=”Node”>节点</param>    
public void Delete(string Node)    
   
/// <summary>    
/// 插入一节点和是节点的一子节点    
/// </summary>    
/// <param name=”MainNode”></param>    
/// <param name=”ChildNode”></param>    
/// <param name=”Element”></param>    
/// <param name=”Content”></param>    
public void InsertNode(string MainNode, string ChildNode, string Element, string Content)    
   
/// <summary>    
/// 插入一个节点带一个属性     
/// </summary>    
/// <param name=”MainNode”>指定的XML节点</param>    
/// <param name=”Element”>元素名称</param>    
/// <param name=”Attrib”>属性名称</param>    
/// <param name=”AttribContent”>属性值</param>    
/// <param name=”Content”>内容</param>    
public void InsertElement(string MainNode, string Element, string Attrib, string AttribContent, string Content)    
   
/// <summary>    
/// 插入XML元素    
/// </summary>    
/// <param name=”MainNode”>指定的XML节点</param>    
/// <param name=”Element”>元素名称</param>    
/// <param name=”Content”>内容</param>    
public void InsertElement(string MainNode, string Element, string Content)    
   
/// <summary>    
/// 保存XML文档    
/// </summary>    

1)辅助类提供的主意接口如下所示: 

相关文章