如何从反射中获得anonyme类的实例?
我有这个字符串:
"<object name='hello' id='654' />"
不确定的属性参数编号(和名称) 从这里我想有一个anonyme类的实例,它具有属性和属性之间的映射,以及属性值和属性值。
var anObject = new{name="hello",id=654};
我把字符串的xml格式用来说明我的话,但我需要一个解决方案来自任何字符串格式(我不想要Xml序列化)。
对于Reed Copsey(请抽象我需要它的上下文)。 我打算用它来将DefaultRoute注入asp.net MVC 3应用程序的地图路径
routes.MapRoute(
"",
"superweirdurlwithnostructure.whatever",
new { controller = "Home", action = "Products", id = 500 }
);
答案 0 :(得分:2)
你不能以这种方式创建一个匿名类(至少没有使用类似CodeDom之类的东西来实际编写和编译代码)。
话虽这么说,即使你可以这样做,也没有好办法使用这个课程。匿名类型实际上是在定义它们的函数中使用,它们被转换为完整的类,由编译器在编译时生成。
可能的一个选择是使用dynamic
:
dynamic anObject = new ExpandoObject();
anObject.name = "hello";
anObject.id = 654;
您也可以通过ExpandoObject
的{{1}}界面使用此功能:
IDictionary<string,object>
然而,你仍然需要一个好的方法来使用它 - 不知道代码应该如何访问变量,动态构建类型无助于解决许多问题,只是创建了更多... < / p>
答案 1 :(得分:0)
不幸的是,您必须使用Reflection.Emit
创建包含所有属性的新类型。匿名类型实际上是与其他任何类型没有区别的类,除了编译器自动创建它们的定义。
根据您的情况,dynamic ExpandoObject
个对象可能就是您的答案。