枚举并将属性从一个对象复制到另一个相同类型的对象

NLV*_*NLV 5 .net c# copy object

我使用第三方控件将一些数据导出为不同的格式.该控件有一个属性ExportSettings.但它是只读的.

我要手动设置它的属性,如

ctrl.ExportSettings.Paging = false;
ctr.ExportSettings.Background = Color.Red;
Run Code Online (Sandbox Code Playgroud)

所以我从用户那里得到了ExportSettings对象,我想把它设置为控件.

如何将其所有成员值复制到用户控件?

nan*_*nan 20

尝试基于反射的克隆:

private object CloneObject(object o)
{
    Type t = o.GetType();
    PropertyInfo[] properties = t.GetProperties();

    Object p = t.InvokeMember("", System.Reflection.BindingFlags.CreateInstance, 
        null, o, null);

    foreach (PropertyInfo pi in properties)
    {
        if (pi.CanWrite)
        {
            pi.SetValue(p, pi.GetValue(o, null), null);
        }
    }

    return p;
}
Run Code Online (Sandbox Code Playgroud)


Aka*_*ava 17

  static void CopyProperties(object dest, object src)
  {
   foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(src))
   {
    item.SetValue(dest, item.GetValue(src));
   } 
  }
Run Code Online (Sandbox Code Playgroud)