1

我正在开发一个用户可以在运行时以编程方式创建类的应用程序。他们有一个 UI 屏幕,可以在其中填写元数据,这些数据会变成类。基本上,用户输入的数据用于在 .cs 文件中生成属性。

因此,我需要能够在用户输入完元数据后从生成的类文件中实例化一个对象。由于类文件是新的并且不是 Web 应用程序编译代码的一部分,我该如何加载和实例化该类?

在用户完成输入元数据后,我能够以编程方式生成 DLL。DLL 包含代表最终用户输入的元数据的 .cs 文件。

我已经研究过创建一个 appDomain 并加载 dll,但由于进程找不到 DLL(即使我正在为新创建的 DLL 使用物理路径)而失败。我研究了插件架构——MEF(微软扩展框架)、MAF(微软插件框架),但我对使用哪个有点困惑。

最好的使用方法是什么?

4

1 回答 1

0

似乎您使用了错误的工具来完成这项工作。对于这种类型的动态对象,.net40 中有动态扩展,否则您可以使用通用属性包对象模式。

但是,如果您真的想这样做并保持足够简单,请使用 MEF。结构映射适用于已知数据类型。MEF 擅长将未知的对象组合在一起。您真正要做的就是将导出应用到生成的类,编译 dll,让 MEF 从 dll 组成一个容器,然后您可以从 MEF 检索对象。

当您尝试将生成的 dll 直接加载到应用程序域时遇到错误时,它也会有很大帮助。

于 2010-06-23T22:30:54.460 回答