如何将匿名类型转换为已知类型
我有一个匿名类型变量。 这个变量来自另一个函数,我们无法改变它。
// 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
有很多属性
谁能帮我? 谢谢你的回答。
您不能在此处使用强制转换,因为您既没有从MyClass
inheritance的匿名类型,也没有为这些类型定义显式类型转换运算符 。
您可以使用AutoMapper (可从NuGet获得)在匿名类型和您的类之间动态映射
var a = new {property1 = "abc", property2 = "def"}; Myclass b = Mapper.DynamicMap(a);
它按名称将匿名对象的属性映射到目标类型的属性: