我有一个主机应用程序,它控制各种工厂类,这些类产生公共数据契约的实现。而且,所有的工厂都是从一个特定的工厂合同中派生出来的。工厂可能需要数据契约的特定实现来生成自己的对象..。因此,主机可以通过工厂合同中的一个函数一般地传递数据,该函数有一个数据契约类型的参数。然后工厂试着把它铸造成他们感兴趣的那种.如果它不匹配就忽略它。到目前为止一切正常。
我想将其扩展到允许用户使用.NET外接程序框架创建外接程序工厂,但我担心隔离边界.例如,如果一个工厂生成一个IData实例,那么另一个由共享具体实现类型的外接程序生成的工厂强制转换对象可以吗?看起来,在附加管道中需要适配器可能会搞砸这件事?
例如,在下图中,具体类DataA将在PluginA和PluginB之间共享,而具体类DataB将在PluginB和PluginC之间共享。

编辑:到目前为止我只知道创建外接程序的System.Addin功能.以及较老的直接反射方法。我刚刚发现了MEF,据说它与作为System.Addin核心的隔离边界无关。有过MEF经验的人知道这会如何影响我的方案吗?
发布于 2010-11-04 19:40:41
因此,经过一些实验,我发现MEF可以解决这些问题。System.Addins创建的隔离屏障似乎使检索实际的具体实现变得不可能.MEF允许我从知道具体实现的加载项中将已发现的外接程序转换回它们的具体类型。
https://stackoverflow.com/questions/4090139
复制相似问题