背景简介:
我的团队决定使用 Microsoft 的托管可扩展性框架 ( MEF ) 来提供可扩展模型,以便将新的“提供者”添加到我们的系统中。
这使我们能够相对轻松地插入新的第 3 方提供商。
注意:MEF 的使用、启动和运行的简单程度给我留下了深刻的印象。
我的问题:
由于这些提供程序通常具有与之关联的不同属性,因此在运行时将这些提供程序加载到系统中时,我们需要访问提供程序的数据流和属性。
由于属性不同,应该采取什么方法来使用所述提供程序插件?注意到他们都做类似的工作。
我的解决方案:
创建提供者必须遵守的接口,从而围绕每个第 3 方提供者创建一个“包装器”,从而为每个提供者提供一致的接口/编程模型。
插件 = 3rd 方数据源(提供者)+ 通用接口实现。
+ve:对于所述插件,不需要更复杂的基于反射的动态“插件”。
-ve:必须为每个提供者编写一个包装器。(无论如何,我们都需要添加 MEF 导出标签)
进一步说明:
对我来说,接口/包装器方法是最简单的,但有人告诉我研究一种基于反射的方法,该方法可以利用反射来发现运行时可以暴露给系统的属性。
我不赞成任何一种解决方案,但我很想听听社区的想法(其中大多数人比我更有经验)。
谢谢。