Enumerate and copy properties from one object to another object of same type

前端 未结 5 913
故里飘歌
故里飘歌 2021-01-18 17:06

I use a third party control which exports some data to different formats. The control has a property ExportSettings. But it is read-only.

I\'ve to manua

相关标签:
5条回答
  • 2021-01-18 17:09

    Use AutoMapper :

    Its very easy to use.

    Getting started with AutoMapper

    0 讨论(0)
  • 2021-01-18 17:11

    Try reflection-based cloning:

    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;
    }
    
    0 讨论(0)
  • 2021-01-18 17:11

    You can do it via Reflection.

    Something like this:

    Type exportSettingType = ctrl.ExportSettings.GetType();
    
    foreach (PropertyInfo property in exportSettingType.GetProperties())
    {
        object value = property.GetValue(ctrl.ExportSettings, null);
        property.SetValue(secondControl.ExportSettings, value, null);
    }
    
    0 讨论(0)
  • 2021-01-18 17:17
      static void CopyProperties(object dest, object src)
      {
       foreach (PropertyDescriptor item in TypeDescriptor.GetProperties(src))
       {
        item.SetValue(dest, item.GetValue(src));
       } 
      }
    
    0 讨论(0)
  • 2021-01-18 17:34

    see How do you do a deep copy of an object in .NET (C# specifically)?

    0 讨论(0)
提交回复
热议问题