【发布时间】:2015-01-16 18:01:33
【问题描述】:
有没有一种简单的方法可以将强类型对象中的所有内容复制到动态对象中?目标必须是 DynamicObject,由我正在使用的第 3 方库确定。来自TypedModel 的所有内容都需要在运行时进入MyDynamicObject。
public class MyDynamicObject : DynamicThirdPartyObject
{ }
public class TypedModel
{
public string text { get; set; }
public int number { get; set; }
public List<SomeOtherModel> someList { get; set; }
}
我在 SO 上找到的现有解决方案都匹配类型化类之间的属性。
编辑
找到了一个基于FastMember的简单解决方案:
public void CopyProperties(object source, DynamicObject target)
{
var wrapped = ObjectAccessor.Create(target);
foreach (var prop in source.GetType().GetProperties())
{
wrapped[prop.Name] = prop.GetValue(source);
}
}
【问题讨论】:
-
你试过只使用反射吗?
-
我觉得你需要看看
Expando Object.msdn.microsoft.com/en-us/library/… -
利用原型设计模式......并为此使用ICloneable并利用反射