命名空间:netMarketing.reflect.reflectHelper
功能:反射功能辅助类
功能详细说明:
这个类封装了反射调用其它dll的函数与窗体的一些方法。
常用函数列表:
/// 创建对象实例 public static T CreateInstance<T>(string fullName, string assemblyName) /// 创建对象实例 public static T CreateInstance<T>(string assemblyName, string nameSpace, string className) /// 根据资源类获取资源名称和类型 public static SortedList<string, string> GetResourceNames(Type p_ResourcesType) /// 由程序集反射出Form并且显示出来 public static void CreateFormAndShow(string dllPathName, string AssemblyName, object StructuralParameters = null, bool isModeShow = true) /// 由窗体类名返回Dock窗体 public static DockContent getDockForm(string fullClassName) /// 由窗体类名返回Dock窗体 public static myForm getDockForm(string assemblyName, string fullClassName, object[] StructuralParameters = null) /// 根据指定的程序集和类全名,返回对象实例(适合Form不带参数) public static object createObjectInstance(string AssemblyName, string objFullName) /// 根据指定的程序集和类全名、窗体参数,返回对象实例(适合Form带参数) public static object createObjectInstance(string AssemblyName, string objFullName,string param) /// 在程序目录下搜索全部dll, 根据指定的类全名,返回对象实例 public static object createObjectInstance(string objFullName) /// 从DLL文件中查找指定的对象定义 private static Type getObjectType(string dllFile, string objFullName) /// 获取类中的属性值 public string GetModelValue(string FieldName, object obj) /// 设置类中的属性值 public bool SetModelValue(string FieldName, string Value, object obj)
勇哥这里给个简单的例子,演示一下GetModelValue函数的用法:
listBox1.Items.Clear(); var sb1 = new StringBuilder(); try { var v = ObjDevice.Instance.pClient.sql.readBatteryInfo("AJ4"); var vAry = v.GetType(); var pary = vAry.GetProperties(); foreach (var m in pary) { listBox1.Items.Add(string.Format("{0}: {1}", m.Name, GetModelValue(m.Name, v) )); } } catch (Exception ex) { MessageBox.Show(ex.Message); }
其中readBatteryInfo()读取数据库中的内容,返回一个tabBatteryInfo类。
public tabBatteryInfo readBatteryInfo(string batteryBreedName) { if (!isConnect) return null; cmd.CommandText = string.Format("select top 1 * from guangyu.dbo.batteryInfo where 电池型号={0}",read电池型号IDbyName( batteryBreedName)); DataSet set = new DataSet(); set.Tables.Clear(); myDataAdapter.Fill(set); if (set.Tables[0].Rows.Count > 0) { var row = set.Tables[0].Rows[0]; return EntityHelper.GetEntityListByDT<tabBatteryInfo>(row, null); } return null; }
tabBatteryInfo类是数据库一个表的实体类。
因此,开头的代码的需求,就是要把这个数据库查询结果,写到控件里显示出来。
这就需求反射取得类的一个实例的属性名字,以及它的值。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:


