在运行时加载程序集 - 插件vs appDomain vs StructureMap vs MEF

时间:2009-11-19 20:22:16

标签: .net assemblies runtime loading

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

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

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

我已经研究过创建appDomain并加载dll但是失败了,因为进程无法找到DLL(即使我正在为新创建的DLL使用物理路径)。我已经研究过plugIn架构 - MEF(Microsoft可扩展性框架),MAF(Microsoft Addin Framework),但我对使用它有点困惑。

最佳使用方法是什么?

1 个答案:

答案 0 :(得分:0)

好像你正在使用错误的工具来完成工作。对于这种类型的动态对象,.net40中有动态扩展,否则你可以使用通用属性包对象模式。

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

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