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

时间:2014-06-17 07:19:31

标签: c# class mapping anonymous-class

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

// 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 个答案:

答案 0 :(得分:8)

您不能在此处使用强制转换,因为您的匿名类型既不是从MyClass继承的,也不是为这些类型定义的explicit type conversion operator

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

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

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

enter image description here