MEF用于动态加载过程定义

时间:2012-06-13 11:59:27

标签: c# mef extensibility

用于动态加载流程定义的MEF

我们有一个由几个部分组成的应用程序:

  • 模型构建器:允许构建ProcessDefinitions(活动,网关,事件等)和任务的域模型。
  • 具体ProcessDefinitions:解决特定业务的ProcessDefinitions集合。每个程序集都包含一系列具体的ProcessDefinitions,Tasks等。
  • 运行时:我们希望它动态加载包含Concrete ProcessDefinitions的程序集,并能够通过一个简单的服务FindProcessDefinition(proceedingId,versionPolicy)找到它们,它将查看所​​有Concrete ProcessDefinition部分。 ProcessDefinition必须是缓存/单例。

你认为MEF可能是解决这个问题的方法吗?我已经看过MEF的例子,但它们用于实现接口,而不是用于这种“构建”模式。

任何提示如何做到这一点?还有其他选择吗?感谢。

1 个答案:

答案 0 :(得分:0)

如果您的具体processdefinitions和实例化这些类的构建器没有公共接口,那么MEF似乎不是正确的工具(imo)。

也许您可以让构建器各自实现一个通用接口。但是,每个具体的流程定义也需要一个通用的接口。情况似乎并非如此。在您的代码中,您不会这样做:

new ConcreteProcessDefinition1.run() 

new ConcreteProcessDefinition2.run(), 

在您的代码中,您可以执行类似

的操作
ConcreteProcessDefinition1.doXYZ(input1, input2)

ConcreteProcessDefinition2.doSomethingTotallyDifferent(input3)

为什么需要动态加载流程定义?您的客户(无权访问您的源代码)是否会创建流程定义?