gpt4 book ai didi

c# - 工厂类的 .NET 插件,其中数据可以转换回具体

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:33 25 4
gpt4 key购买 nike

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

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

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

alt text


编辑:到目前为止,我只知道用于创建加载项的 System.Addin 功能......以及涉及直接反射的旧方法。我刚刚发现 MEF,它应该不关心作为 System.Addin 内容核心的隔离边界。有 MEF 经验的人知道这会对我的场景产生怎样的影响吗?

最佳答案

经过一些实验,我找到了 MEF可以解决这些问题。 System.Addins 创建的隔离屏障似乎无法检索实际的具体实现...MEF 允许我将发现的加载项从了解特定实现的加载项转换回它们的具体类型。

关于c# - 工厂类的 .NET 插件,其中数据可以转换回具体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090139/

25 4 0