从Xml创建一个类型

时间:2009-04-20 15:13:54

标签: .net xml reflection reflection.emit

我有像这样的xml

我想解析xml,使用spscified属性构建一个动态类。我发现了一些使用system.reflection.emit命名空间的指针,但是我总是要创建一个程序集和模块来定义类型?我可以创建一个类型并定义属性吗?

<Root>
<type>
<name>mytype</name>
 <properties>
  <property>
    <name>property1</name>
    <value>2</value>
    <datatype>int</datatype>
  </property>
  <property>
    <name>property3</name>
    <value>2.5</value>
    <datatype>double</datatype>
  </property>
  <property>
    <name>property4</name>
    <value>hello world</value>
    <datatype>string</datatype>
  </property>
 </properties>
</type>
</Root>

2 个答案:

答案 0 :(得分:0)

类型必须始终存在于程序集中 - 因此您必须在内存中创建程序集。您可能会发现使用CodeDom模型定义类型会更容易一些。

答案 1 :(得分:0)

This example显示创建一个AssemblyBuilder,然后创建一个ModuleBuilder,然后创建TypeBuilder。从那里你必须定义属性。你必须创建具有返回和方法的方法。与get和set访问器匹配的参数。该示例显示了使用字段进行存储的标准get / set操作的基本实现。如果你需要更多,那么你将不得不学习CIL来启动。

完成所有操作后,如果您希望将其保存以备将来使用,请调用TypeBuilder.CreateType和可能的AssemblyBuilder.Save。

至于你对创建程序集的担忧。定义动态组件并不是那么重要。模块。这只是几行。