如何使用MEF初始化一组类?

时间:2010-12-02 14:57:46

标签: dependency-injection prism mef

我为我的应用程序使用prism / mvvm / mef,加载标有ViewExport(Region)的所有视图都可以很好地工作(我正在使用StockTraderRI AutoPopulateExportedViewsBehaviour)。

现在,我想使用此运行时查找功能来初始化其他一些后台类。

说我有一个界面

public interface ITable
{
}

我从这个界面得到了很多类。

有没有办法以某种方式标记这些派生类,并让MEF在运行时创建它们并将它们添加到某种列表或容器中?

喜欢进入一个没有出现在任何地方的地区,我期待?我如何在MEF中实现这一目标?

2 个答案:

答案 0 :(得分:3)

当然有! 使用Export属性标记继承您的接口的类,并在另一个类中创建一个属性,例如具有属性[ImportMany]的泛型类型ObservableCollection。应该这样做。

答案 1 :(得分:1)

如果您使用MEF而不是Unity,您也可以在引导程序中使用Container调用:

var tables = Container.GetExportedValues<ITable>();

Container是MEFBootstrapper的公共属性。