在日常的.net程序开发过程中,我们经常会定义一些实体类,用于给业务操作时提供方便,那么就会出现对实体进行赋值。通常的做法我们会把他们一一列举出来进行复制,如果实例类的属性比较多,通过上面的做法就会比较繁琐。
下面我们利用反射来进行获取对象并进行复制。
下面讲述在现项目中反射另外一个项目编译成的dll中的内容
以上这个方法可以根据自己的情况进行改进,写一个满足自己需求的方法。
下面我们利用反射来进行获取对象并进行复制。
下面讲述在现项目中反射另外一个项目编译成的dll中的内容
/// <summary>
/// BDU.dll保存路径,反射时使用
/// </summary>
public static string DBUPATH = AppDomain.CurrentDomain.BaseDirectory + "\\bin\\BDU.dll";
/// <summary>
/// 反射BDU.dll实体对象的全称
/// </summary>
public const string DBUBASEPARAMETERSNAME = "BDU.BaseParameters.BDU_";
/// BDU.dll保存路径,反射时使用
/// </summary>
public static string DBUPATH = AppDomain.CurrentDomain.BaseDirectory + "\\bin\\BDU.dll";
/// <summary>
/// 反射BDU.dll实体对象的全称
/// </summary>
public const string DBUBASEPARAMETERSNAME = "BDU.BaseParameters.BDU_";
//类名称
string strDropValue="";
string strDropValue="";
//获取程序集
AssemblyprogramGather=Assembly.LoadFrom(SystemConstSet.DBUPATH);
//获取程序集中对应实体
Type objectType
=programGather.GetType(SystemConstSet.DBUBASEPARAMETERSNAME + strDropValue, false);
//创建实体对象
object objInstance = Activator.CreateInstance(objectType, true);
AssemblyprogramGather=Assembly.LoadFrom(SystemConstSet.DBUPATH);
//获取程序集中对应实体
Type objectType
=programGather.GetType(SystemConstSet.DBUBASEPARAMETERSNAME + strDropValue, false);
//创建实体对象
object objInstance = Activator.CreateInstance(objectType, true);
//遍历实体属性
foreach (PropertyInfo property in objectType.GetProperties())
{
property.SetValue(objInstance, ???, null);
}
foreach (PropertyInfo property in objectType.GetProperties())
{
property.SetValue(objInstance, ???, null);
}
//property.SetValue(objInstance, ???, null);这个方法的用法可以参考msndn ,???表示你所要付给属性的值,必须转换成对象
转载于:https://blog.51cto.com/ourlife/305927