0

我有一个加载 DLL 并实例化预定义对象的程序。该对象具有许多属性,其名称在 XML 文件中定义。我的程序需要在实例化对象中获取/设置这些属性。

我正在寻找模式/方法来做同样的事情。

我不能使用反射,因为这个 Get/Set 方法在我的程序中循环调用。使用反射是非常昂贵的。

你们中的任何人有用于此类场景的最佳实践吗?

注意:如果需要,我可以更改从 DLL 动态加载的对象的结构(我正在开发它),但我的程序不知道对象属性的名称(DLL 也是动态生成的,所以本质上,用户指定对象中所需的成员,另一个程序生成代码文件并将它们编译成上面提到的DLL。之后,我的程序加载这个新生成的DLL并开始工作。所以,我可以改变结构DLL 中的对象,但我事先不知道 DLL 对象中包含的属性。)

4

1 回答 1

0

如果还不算太晚,我会建议以下方法。

设计您的外部程序,以便,

  1. 它将用户输入构造为 xml 文件。
  2. 通过 .Net Framework SDK 附带的 Xsd.exe 工具生成 xsd 文件
  3. 再次使用 xsd.exe 从 xsd 文件生成类

这样您就可以拥有您的主应用程序,将纯 xml 反序列化为外部程序生成的类。最后它应该如下所示,并且几乎不需要维护代码。

外部程序:Xml 数据 -> Xsl 架构 -> GeneratedClasses

主要应用程序:Xml 数据 -> 反序列化为实例

于 2012-12-18T08:20:21.357 回答