我有一个匿名类型变量。这个变量来自另一个函数,我们无法改变它。
// var a {property1 = "abc"; property2 = "def"}
我有一个班级:
class Myclass{
string property1;
string property2;
}
如何将变量a
转换为Myclass
类型。我试过了
Myclass b = (Myclass)a;
但它没有用。
如果我初始化:
Myclass b = new Myclass{
property1 = a.property1,
property2 = a.property2,
}
它正在运行,但需要大量代码,因为MyClass
有许多属性
任何人都可以帮助我吗?谢谢你的回答。
答案 0 :(得分:8)
您不能在此处使用强制转换,因为您的匿名类型既不是从MyClass
继承的,也不是为这些类型定义的explicit type conversion operator。
您可以使用AutoMapper(可从NuGet获得)在匿名类型和您的班级之间动态映射
var a = new {property1 = "abc", property2 = "def"};
Myclass b = Mapper.DynamicMap<Myclass>(a);
它按名称将匿名对象的属性映射到目标类型的属性: