在日常的.net程序开发过程中,我们经常会定义一些实体类,用于给业务操作时提供方便,那么就会出现对实体进行赋值。通常的做法我们会把他们一一列举出来进行复制,如果实例类的属性比较多,通过上面的做法就会比较繁琐。
下面我们利用反射来进行获取对象并进行复制。

下面讲述在现项目中反射另外一个项目编译成的dll中的内容
InBlock.gif /// <summary>
InBlock.gif /// BDU.dll保存路径,反射时使用
InBlock.gif /// </summary>
InBlock.gif public static string DBUPATH = AppDomain.CurrentDomain.BaseDirectory + "\\bin\\BDU.dll";
InBlock.gif
  /// <summary>
  /// 反射BDU.dll实体对象的全称
InBlock.gif /// </summary>
InBlock.gif public const string DBUBASEPARAMETERSNAME    = "BDU.BaseParameters.BDU_";
InBlock.gif //类名称
InBlock.gif string strDropValue="";
InBlock.gif //获取程序集
AssemblyprogramGather=Assembly.LoadFrom(SystemConstSet.DBUPATH);
InBlock.gif //获取程序集中对应实体
Type objectType
=programGather.GetType(SystemConstSet.DBUBASEPARAMETERSNAME + strDropValue, false);
InBlock.gif //创建实体对象
InBlock.gif object objInstance = Activator.CreateInstance(objectType, true);
InBlock.gif //遍历实体属性
InBlock.gif foreach (PropertyInfo property in objectType.GetProperties())
InBlock.gif{
InBlock.gifproperty.SetValue(objInstance, ???, null);
InBlock.gif}
InBlock.gif //property.SetValue(objInstance, ???, null);这个方法的用法可以参考msndn ,???表示你所要付给属性的值,必须转换成对象
以上这个方法可以根据自己的情况进行改进,写一个满足自己需求的方法。