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

4

我有一个匿名类型变量。这个变量是从另一个函数中获取的,我们无法更改它。

// 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有很多属性。

有人能帮我吗?感谢任何答案。


1
你不能进行强制类型转换,因为这些类型之间没有关联。如果你真的不想编写初始化代码,可以使用映射库(例如automapper)来帮助你完成工作。 - MarcinJuraszek
1
使用AutoMapper - John Woo
1个回答

10

在这里,您无法使用强制转换,因为您的匿名类型既没有继承自MyClass,也没有为这些类型定义显式类型转换运算符

您可以使用AutoMapper(可从NuGet获取)来动态映射匿名类型和您的类。

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

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

@JohnNguyen,请跟随链接,或者您可以在NuGet中简单地找到AutoMapper。 - Sergey Berezovskiy
1
感谢您让我了解转换运算符。 - Tarik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接