C# 将强类型对象的所有属性复制到DynamicObject中

C# 将强类型对象的所有属性复制到DynamicObject中,c#,.net,C#,.net,有没有一种简单的方法可以将所有内容从强类型对象复制到动态对象?目标必须是由我正在使用的第三方库确定的DynamicObject。从TypedModel的所有内容都需要在运行时进入MyDynamicObject public class MyDynamicObject : DynamicThirdPartyObject { } public class TypedModel { public string text { get; set; } public int number

有没有一种简单的方法可以将所有内容从强类型对象复制到动态对象?目标必须是由我正在使用的第三方库确定的
DynamicObject
。从
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; }
}

我建议使用反射

假设您做出以下声明:

public class MyDynamicObject : DynamicThirdPartyObject
{ }

public class TypedModel
{
    public string text { get; set; }

    public int number { get; set; }

    public List<SomeOtherModel> ListOtherModel { get; set; }
}
另一种可能的情况是,如果要复制类型:

typeof(TypedModel).GetProperties();

TypedModel typeModel = new TypedModel {number = 1, text = "text1", 
ListOhterModel = new List()
};
foreach(var prop in typeModel.GetType().GetProperties()) 
{
    Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(typeModel, null));
}

如果需要遍历层次结构,可能需要使用递归来遍历嵌套类型,我的意思是你可以使用反射来复制其他模型的所有成员。

你试过只使用反射吗?我想你需要看看
Expando对象。
。这可能与使用原型设计模式相同……并使用iClonable并使用反射
typedModel.GetType().GetProperties();
typeof(TypedModel).GetProperties();

TypedModel typeModel = new TypedModel {number = 1, text = "text1", 
ListOhterModel = new List()
};
foreach(var prop in typeModel.GetType().GetProperties()) 
{
    Console.WriteLine("{0}={1}", prop.Name, prop.GetValue(typeModel, null));
}