命名空间:netMarketing.reflect.reflectHelper
功能:反射功能辅助类
功能详细说明:
这个类封装了反射调用其它dll的函数与窗体的一些方法。
常用函数列表:/// 创建对象实例
public static T CreateInstance(string fullName, string assemblyName)
/// 创建对象实例
public static T CreateInstance(string assemblyName, string nameSpace, string className)
/// 根据资源类获取资源名称和类型
public static SortedList 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(row, null);
}
return null;
}
tabBatteryInfo类是数据库一个表的实体类。
因此,开头的代码的需求,就是要把这个数据库查询结果,写到控件里显示出来。
这就需求反射取得类的一个实例的属性名字,以及它的值。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。
收藏 | 0点赞 | 0打赏作者