我写了一个函数,将一个类的属性复制到另一个类,所以制作一个对象的副本.
所以像
MyObject myObject = myOtherObject.MyCustomCopy(myObject)
Run Code Online (Sandbox Code Playgroud)
其中myObject和myOtherObject属于同一类型.我这样做是基本做的
myObject.prop1 = myOtherObject.prop1
myObject.prop2 = myOtherObject.prop2
myObject.prop3 = myOtherObject.prop3
return myObject
Run Code Online (Sandbox Code Playgroud)
我很确定在过去我使用.NET对象自动完成这个,通过反思我猜,但不记得了......或者我想象这样的方法存在?
是的我知道自动映射器,但我确信(现在不是那么多)有一个.NET对象可以完成这项工作.也许不吧!
public static class ext
{
public static void CopyAllTo<T>(this T source, T target)
{
var type = typeof(T);
foreach (var sourceProperty in type.GetProperties())
{
var targetProperty = type.GetProperty(sourceProperty.Name);
targetProperty.SetValue(target, sourceProperty.GetValue(source, null), null);
}
foreach (var sourceField in type.GetFields())
{
var targetField = type.GetField(sourceField.Name);
targetField.SetValue(target, sourceField.GetValue(source));
}
}
}
Run Code Online (Sandbox Code Playgroud)