工厂类的.NET加载项,可以将数据转换回具体的数据库

时间:2010-11-03 18:05:40

标签: c# interface casting add-in

我有一个托管应用程序,它控制各种工厂类,这些类可以生成通用数据协定的实现。此外,所有工厂都来自特定的工厂合同。工厂可能需要数据协定的特定实现来生成它们自己的对象...因此主机可以通过具有数据协定类型的一个参数的工厂合同中的函数一般地传递​​数据。然后工厂尝试将其转换为他们感兴趣的类型......如果它不匹配则忽略它。到目前为止,一切正常。

我想扩展它以允许用户使用.NET加载项框架创建加载项工厂,但我关注隔离边界...例如,如果工厂生成IData实例,可以另一个工厂将加载项生成的对象转换为共享的具体实现类型?看起来加载管道中对适配器的需求可能会搞砸了吗?

例如,在下图中,具体类DataA将在PluginA和PluginB之间共享,具体类DataB将在PluginB和PluginC之间共享。

alt text


修改 到目前为止,我只知道用于创建加载项的System.Addin功能以及涉及直接反射的旧方法。我刚刚发现了MEF,据说它并不关心System.Addin核心的隔离边界。有MEF经验的人是否知道这可能会对我的情况产生什么影响?

1 个答案:

答案 0 :(得分:0)

经过一些实验,我发现MEF可以解决这些问题。 System.Addins创建的隔离障碍似乎使得无法检索实际的具体实现...... MEF允许我从已知具体实现的插件中将已发现的插件强制转换为其具体类型。