0

我有一个这样的 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>
4

2 回答 2

0

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

于 2009-04-20T15:18:30.400 回答
0

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

完成后调用 TypeBuilder.CreateType 和可能的 AssemblyBuilder.Save 如果您希望保存以供将来使用。

至于您对创建程序集的担忧。定义动态程序集和模块并不是什么大不了的事。只需几行即可。

于 2009-04-30T22:49:11.657 回答