如何将匿名类型转换为已知类型

Joh*_*yen 3 c# mapping class anonymous-class

我有一个匿名类型变量.这个变量来自另一个函数,我们无法改变它.

// var a {property1 = "abc"; property2 = "def"}
Run Code Online (Sandbox Code Playgroud)

我有一节课:

class Myclass{
   string property1;
   string property2;
}
Run Code Online (Sandbox Code Playgroud)

如何将变量转换aMyclass类型.我试过了

Myclass b = (Myclass)a; 
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

如果我初始化:

Myclass b = new Myclass{
  property1 = a.property1,
  property2 = a.property2,
} 
Run Code Online (Sandbox Code Playgroud)

它工作正常,但需要很多代码,因为它MyClass有许多属性

谁能帮我?谢谢你的回答.

Ser*_*kiy 8

您不能在此处使用强制转换,因为您既没有继承匿名类型,MyClass也没有为这些类型定义显式类型转换运算符.

您可以使用AutoMapper(可从NuGet获得)在匿名类型和您的类之间动态映射

var a = new {property1 = "abc", property2 = "def"};
Myclass b = Mapper.DynamicMap<Myclass>(a);
Run Code Online (Sandbox Code Playgroud)

它按名称将匿名对象的属性映射到目标类型的属性:

在此输入图像描述