gpt4 book ai didi

c# - 有两个单独的 MEF 插件容器是不好的做法吗?

转载 作者:行者123 更新时间:2023-11-30 22:27:55 25 4
gpt4 key购买 nike

假设我有一个类(不是静态类)A,它以某种方式使用了插件。我使用 MEF 来管理这些插件,并为我的用户添加添加部件目录的方法。用法示例:

var myA = new A();
myA.LoadPlugins(new DirectoryCatalog("path/to/plugins"));
myA.DoStuffWithPlugins();

在与 A 相同的命名空间中是类 BB也使用MEF来管理插件,并且有自己的CompositionContainer。如果用户想要与B 的插件进行交互,她必须使用B 的插件管理方法。

B 的使用就像上面的 A 一样。

我的问题是,这不好吗?我是否应该关心在我的命名空间中有两个单独的地方来加载插件?如果不好,有什么替代方案?

最佳答案

My question is, is this bad? Should I care that there are two separate places to load plugins in my namespace? If it is bad, what are the alternatives?

不一定。没有理由不能在同一应用程序中拥有两个完全独立的组合。

话虽如此,在大多数情况下,也没有真正的理由拥有多个组合。 MEF 将同时组合两组数据。在您的情况下,您可以使用相同的组合容器来组合您的导入器和您的报告,这将具有允许扩展您的系统的人仅创建一个扩展您的应用程序的两个部分的程序集的优势。

这里一个潜在的小危险信号是,它们是同一命名空间中的两种不同类型,但每种类型都有自己的插件系统。通常,具有完整插件系统的框架会非常复杂,以至于我会质疑它们是否属于同一个命名空间——尽管从“A”和“B”的类型名称来看,不可能知道这是否真的如此不合适。

关于c# - 有两个单独的 MEF 插件容器是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com