我应该如何在 C# 中创建具有多个实例的插件?

发布于 2024-08-03 11:47:42 字数 461 浏览 5 评论 0原文

我的最终目标是将控件作为插件加载,以用作 AvalonDock 中的 DocumentContent。因此,我需要能够创建这些控件的多个实例,并且我希望插件创建者的开销尽可能有限。

我最初的意图是使用 MEF 来定位和管理我的插件,但是这个问题< /a> 似乎暗示,至少在此时,MEF 可能不适合此目的。

我应该使用另一个解决方案(DI 容器的域,或者具体来说是 MEF,被认为仅限于提供类的实例,并且是否有另一个解决方案可以更好地映射我的问题),或者我应该使用建议的解决方案(例如使用反射来克隆实例,或要求插件创建者提供工厂方法/对象 - 看似黑客)与 MEF 一起工作(或者,是否有一种简单的方法来配置 MEF 来完成此任务)?

My ultimate goal is to load controls as plugins, for use as DocumentContent in AvalonDock. As a result, I will need to be able to create multiple instances of these controls, and I would prefer to do so with as limited overhead for the Plugin creators as possible.

My initial intention was to use MEF to locate and manage my plugins, but this question seems to imply that, at least at this point in time, MEF might not be intended for this.

Should I be using another solution (is the domain of DI containers, or MEF specifically, considered limited to providing instances of classes, and is there another solution that maps better to my problem), or should I use the suggested solutions (such as using reflection to clone instances, or requiring plugin creators to supply factory methods/objects - seemingly hackish) to work with/around MEF (or alternatively, is there a simple way to configure MEF to accomplish this)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

咿呀咿呀哟 2024-08-10 11:47:42

MEF 的最新预览版包括专门针对此场景的类型 - 请参阅此处的博客文章:http://blogs.msdn.com/nblumhardt/archive/2009/08/28/dynamic-part-instantiation-in-mef.aspx 或有关的更多信息MEF 维基: http://mef.codeplex.com/ Wiki/View.aspx?title=PartCreator&referringTitle=主页

MEF's latest previews includes a type specifically for this scenario - see the blog post here: http://blogs.msdn.com/nblumhardt/archive/2009/08/28/dynamic-part-instantiation-in-mef.aspx or more info on the MEF wiki: http://mef.codeplex.com/Wiki/View.aspx?title=PartCreator&referringTitle=Home.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文