/**//// 
 /// 用户指定具体的配置文件路径
 /// 
 /// 配置文件路径(绝对路径)
 public AppConfig(string configFilePath)
 {
 filePath = configFilePath;
 }
 /**//// 
 /// 设置程序的config文件
 /// 
 /// 键名
 /// 键值
 public void AppConfigSet(string keyName, string keyValue)
 {
 //由于存在多个Add键值,使得访问appSetting的操作不成功,故注释下面语句,改用新的方式
 /**//* 
 string xpath = "//add[@key='" + keyName + "']";
 XmlDocument document = new XmlDocument();
 document.Load(filePath);
 XmlNode node = document.SelectSingleNode(xpath);
 node.Attributes["value"].Value = keyValue;
 document.Save(filePath); 
 */
 XmlDocument document = new XmlDocument();
 document.Load(filePath);
 XmlNodeList nodes = document.GetElementsByTagName("add");
 for (int i = 0; i < nodes.Count; i++)
 {
 //获得将当前元素的key属性
 XmlAttribute attribute = nodes[i].Attributes["key"];
 //根据元素的第一个属性来判断当前的元素是不是目标元素
 if (attribute != null && (attribute.Value == keyName))
 {
 attribute = nodes[i].Attributes["value"];
 //对目标元素中的第二个属性赋值
 if (attribute != null)
 {
 attribute.Value = keyValue;
 break;
 }
 }
 }
 document.Save(filePath);
 }
 /**//// 
 /// 读取程序的config文件的键值。
 /// 如果键名不存在,返回空
 /// 
 /// 键名
 /// 
 public string AppConfigGet(string keyName)
 {
 string strReturn = string.Empty;
 try
 {
 XmlDocument document = new XmlDocument();
 document.Load(filePath);
 XmlNodeList nodes = document.GetElementsByTagName("add");
 for (int i = 0; i < nodes.Count; i++)
 {
 //获得将当前元素的key属性
 XmlAttribute attribute = nodes[i].Attributes["key"];
 //根据元素的第一个属性来判断当前的元素是不是目标元素
 if (attribute != null && (attribute.Value == keyName))
 {
 attribute = nodes[i].Attributes["value"];
 if (attribute != null)
 {
 strReturn = attribute.Value;
 break;
 }
 }
 }
 }
 catch
 {
 ;
 }
 return strReturn;
 }
 /**//// 
 /// 获取指定键名中的子项的值
 /// 
 /// 键名
 /// 以分号(;)为分隔符的子项名称
 /// 对应子项名称的值(即是=号后面的值)
 public string GetSubValue(string keyName, string subKeyName)
 {
 string connectionString = AppConfigGet(keyName).ToLower();
 string[] item = connectionString.Split(new char[] {';'});
 for (int i = 0; i < item.Length; i++)
 {
 string itemValue = item[i].ToLower();
 if (itemValue.IndexOf(subKeyName.ToLower()) >= 0) //如果含有指定的关键字
 {
 int startIndex = item[i].IndexOf("="); //等号开始的位置
 return item[i].Substring(startIndex + 1); //获取等号后面的值即为Value
 }
 }
 return string.Empty;
 }
}
AppConfig测试代码:
 public class TestAppConfig
 {
 public static string Execute()
 {
 string result = string.Empty;
 //读取Web.Config的
 AppConfig config = new AppConfig();
 result += "读取Web.Config中的配置信息:" + "\r\n";
 result += config.AppName + "\r\n";
 result += config.AppConfigGet("WebConfig") + "\r\n";
 config.AppConfigSet("WebConfig", DateTime.Now.ToString("hh:mm:ss"));
 result += config.AppConfigGet("WebConfig") + "\r\n\r\n";
 //读取*.App.Config的
 config = new AppConfig("TestUtilities.exe.config");
 result += "读取TestUtilities.exe.config中的配置信息:" + "\r\n";
 result += config.AppName + "\r\n";
 result += config.AppConfigGet("AppConfig") + "\r\n";
 config.AppConfigSet("AppConfig", DateTime.Now.ToString("hh:mm:ss"));
 result += config.AppConfigGet("AppConfig") + "\r\n\r\n";
 return result;
 }
 }
2. 反射操作辅助类ReflectionUtil
 /**//// 
 /// 反射操作辅助类
 /// 
 public sealed class ReflectionUtil
 {
 private ReflectionUtil()
 {
 }
 private static BindingFlags bindingFlags = BindingFlags.DeclaredOnly | BindingFlags.Public |
 BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static;
 /**//// 
 /// 执行某个方法
 /// 
 /// 指定的对象
 /// 对象方法名称
 /// 参数
 /// 
 public static object InvokeMethod(object obj, string methodName, object[] args)
 {
 object objResult = null;
 Type type = obj.GetType();
 objResult = type.InvokeMember(methodName, bindingFlags | BindingFlags.InvokeMethod, null, obj, args);
 return objResult;
 }
 /**//// 
 /// 设置对象字段的值
 /// 
 public static void SetField(object obj, string name, object value)
 {
 FieldInfo fieldInfo = obj.GetType().GetField(name, bindingFlags);
 object objValue = Convert.ChangeType(value, fieldInfo.FieldType);
 fieldInfo.SetValue(objValue, value);
 }
 /**//// 
 /// 获取对象字段的值
 /// 
 public static object GetField(object obj, string name)
 {
 FieldInfo fieldInfo = obj.GetType().GetField(name, bindingFlags);
 return fieldInfo.GetValue(obj);
 }
 /**//// 
 /// 设置对象属性的值
 /// 
 public static void SetProperty(object obj, string name, object value)
 {
 PropertyInfo propertyInfo = obj.GetType().GetProperty(name, bindingFlags);
 object objValue = Convert.ChangeType(value, propertyInfo.PropertyType);
 propertyInfo.SetValue(obj, objValue, null);
 }
 /**//// 
 /// 获取对象属性的值
 /// 
 public static object GetProperty(object obj, string name)
 {
 PropertyInfo propertyInfo = obj.GetType().GetProperty(name, bindingFlags);
 return propertyInfo.GetValue(obj, null);
 }
 /**//// 
 /// 获取对象属性信息(组装成字符串输出)
 /// 
 public static string GetProperties(object obj)
 {
 StringBuilder strBuilder = new StringBuilder();
 PropertyInfo[] propertyInfos = obj.GetType().GetProperties(bindingFlags);
 foreach (PropertyInfo property in propertyInfos)
 {
 strBuilder.Append(property.Name);
 strBuilder.Append(":");
 strBuilder.Append(property.GetValue(obj, null));
 strBuilder.Append("\r\n");
 }
 return strBuilder.ToString();
 }
 }
反射操作辅助类ReflectionUtil测试代码:
 public class TestReflectionUtil
 {
 public static string Execute()
 {
 string result = string.Empty;
 result += "使用ReflectionUtil反射操作辅助类:" + "\r\n";
 try
 {
 Person person = new Person();
 person.Name = "wuhuacong";
 person.Age = 20;
 result += DecriptPerson(person);
 person.Name = "Wade Wu";
 person.Age = 99;
 result += DecriptPerson(person);
 }
 catch (Exception ex)
 {
 result += string.Format("发生错误:{0}!\r\n \r\n", ex.Message);
 }
 return result;
 }
 public static string DecriptPerson(Person person)
 {
 string result = string.Empty;
 result += "name:" + ReflectionUtil.GetField(person, "name") + "\r\n";
 result += "age" + ReflectionUtil.GetField(person, "age") + "\r\n";
 result += "Name:" + ReflectionUtil.GetProperty(person, "Name") + "\r\n";
 result += "Age:" + ReflectionUtil.GetProperty(person, "Age") + "\r\n";
 result += "Say:" + ReflectionUtil.InvokeMethod(person, "Say", new object[] {}) + "\r\n";
 result += "操作完成!\r\n \r\n";
 return result;
 }
 }
3. 注册表访问辅助类RegistryHelper
 /**//// 
 /// 注册表访问辅助类
 /// 
 public sealed class RegistryHelper
 {
 private string softwareKey = string.Empty;
 private RegistryKey rootRegistry = Registry.CurrentUser;
 /**//// 
 /// 使用注册表键构造,默认从Registry.CurrentUser开始。
 /// 
 /// 注册表键,格式如"SOFTWARE\\Huaweisoft\\EDNMS"的字符串
 public RegistryHelper(string softwareKey) : this(softwareKey, Registry.CurrentUser)
 {
 }
 /**//// 
 /// 指定注册表键及开始的根节点查询
 /// 
 /// 注册表键
 /// 开始的根节点(Registry.CurrentUser或者Registry.LocalMachine等)
 public RegistryHelper(string softwareKey, RegistryKey rootRegistry)
 {
 this.softwareKey = softwareKey;
 this.rootRegistry = rootRegistry;
 }
 /**//// 
 /// 根据注册表的键获取键值。
 /// 如果注册表的键不存在,返回空字符串。
 /// 
 /// 注册表的键
 /// 键值
 public string GetValue(string key)
 {
 const string parameter = "key";
 if (null == key)
 {
 throw new ArgumentNullException(parameter);
 }
 string result = string.Empty;
 try
 {
 RegistryKey registryKey = rootRegistry.OpenSubKey(softwareKey);
 result = registryKey.GetValue(key).ToString();
 }
 catch
 {
 ;
 }
 return result;
 }
 /**//// 
 /// 保存注册表的键值
 /// 
 /// 注册表的键
 /// 键值
 /// 成功返回true,否则返回false.
 public bool SaveValue(string key, string value)
 {
 const string parameter1 = "key";
 const string parameter2 = "value";
 if (null == key)
 {
 throw new ArgumentNullException(parameter1);
 }
 if (null == value)
 {
 throw new ArgumentNullException(parameter2);
 }
 RegistryKey registryKey = rootRegistry.OpenSubKey(softwareKey, true);
 if (null == registryKey)
 {
 registryKey = rootRegistry.CreateSubKey(softwareKey);
 }
 registryKey.SetValue(key, value);
 return true;
 }
 }
注册表访问辅助类RegistryHelper测试代码:
 public class TestRegistryHelper
 {
 public static string Execute()
 {
 string result = string.Empty;
 result += "使用RegistryHelper注册表访问辅助类:" + "\r\n";
 RegistryHelper registry = new RegistryHelper("SoftWare\\HuaweiSoft\\EDNMS");
 bool sucess = registry.SaveValue("Test", DateTime.Now.ToString("hh:mm:ss"));
 if (sucess)
 {
 result += registry.GetValue("Test");
 }
 return result;
 }
 }
4. 压缩/解压缩辅助类ZipUtil
 /**//// 
 /// 压缩/解压缩辅助类
 /// 
 public sealed class ZipUtil
 {
 private ZipUtil()
 {
 }
 /**//// 
 /// 压缩文件操作
 /// 
 /// 待压缩文件名
 /// 压缩后的文件名
 /// 0~9,表示压缩的程度,9表示最高压缩
 /// 缓冲块大小
 public static void ZipFile(string fileToZip, string zipedFile, int compressionLevel, int blockSize)
 {
 if (! File.Exists(fileToZip))
 {
 throw new FileNotFoundException("文件 " + fileToZip + " 没有找到,取消压缩。");
 }
 using (FileStream streamToZip = new FileStream(fileToZip, FileMode.Open, FileAccess.Read))
 {
 FileStream fileStream = File.Create(zipedFile);
 using (ZipOutputStream zipStream = new ZipOutputStream(fileStream))
 {
 ZipEntry zipEntry = new ZipEntry(fileToZip);
 zipStream.PutNextEntry(zipEntry);
 zipStream.SetLevel(compressionLevel);
 byte[] buffer = new byte[blockSize];
 Int32 size = streamToZip.Read(buffer, 0, buffer.Length);
 zipStream.Write(buffer, 0, size);
 try
 {
 while (size < streamToZip.Length)
 {
 int sizeRead = streamToZip.Read(buffer, 0, buffer.Length);
 zipStream.Write(buffer, 0, sizeRead);
 size += sizeRead;
 }
 }
 catch (Exception ex)
 {
 throw ex;
 }
 zipStream.Finish();
 }
 }
 }
 /**//// 
 /// 打开sourceZipPath的压缩文件,解压到destPath目录中
 /// 
 /// 待解压的文件路径
 /// 解压后的文件路径
 public static void UnZipFile(string sourceZipPath, string destPath)
 {
 if (!destPath.EndsWith(Path.DirectorySeparatorChar.ToString()))
 {
 destPath = destPath + Path.DirectorySeparatorChar;
 }
 using (ZipInputStream zipInputStream = new ZipInputStream(File.OpenRead(sourceZipPath)))
 {
 ZipEntry theEntry;
 while ((theEntry = zipInputStream.GetNextEntry()) != null)
 {
 string fileName = destPath + Path.GetDirectoryName(theEntry.Name) +
 Path.DirectorySeparatorChar + Path.GetFileName(theEntry.Name);
 //create directory for file (if necessary)
 Directory.CreateDirectory(Path.GetDirectoryName(fileName));
 if (!theEntry.IsDirectory)
 {
 using (FileStream streamWriter = File.Create(fileName))
 {
 int size = 2048;
 byte[] data = new byte[size];
 try
 {
 while (true)
 {
 size = zipInputStream.Read(data, 0, data.Length);
 if (size > 0)
 {
 streamWriter.Write(data, 0, size);
 }
 else
 {
 break;
 }
 }
 }
 catch
 {
 }
 }
 }
 }
 }
 }
 }
压缩/解压缩辅助类ZipUtil测试代码:
 public class TestZipUtil
 {
 public static string Execute()
 {
 string result = string.Empty;
 result += "使用ZipUtil压缩/解压缩辅助类:" + "\r\n";
 try
 {
 ZipUtil.ZipFile("Web.Config", "Test.Zip", 6, 512);
 ZipUtil.UnZipFile("Test.Zip", "Test");
 result += "操作完成!\r\n \r\n";
 }
 catch (Exception ex)
 {
 result += string.Format("发生错误:{0}!\r\n \r\n", ex.Message);
 }
 return result;
 }
 }
来源:cnblogs