我应该在哪里放置MEF接口?

sti*_*mms 8 c# mef

在组织项目时,我应该在哪里放置MEF中使用的提供程序接口?目前我只是将它们与其他所有项目放在同一项目中,但似乎我可能需要将它们提取到一个单独的dll中,这样它就是一个非常小的dll,很容易被其他人试图编写扩展名链接.这有什么好的做法?

Mat*_*ton 6

与任何插件/扩展模型一样,您应该将"契约"(插件作者应该实现的接口)放在与应用程序分开的程序集中.

这样,您可以为插件作者提供该程序集,而无需为其提供整个应用程序 - 如果它是您需要单独许可的商业应用程序,则非常有用.

MEF Preview 5引入了导出接口的功能(即将[Export]属性添加到接口),以便自动导出该接口的任何实现者.这意味着插件作者甚至不需要了解MEF - 他们只是实现您的界面,他们自动成为MEF扩展.