Dependency injection 如何使用MEF初始化一组类?
我在我的应用程序中使用prism/mvvm/mef,加载标有ViewExport(Region)的所有视图效果很好(我使用的是StockTraderRI AutoPopulateExportedViewsBehaviour) 现在我想使用这个运行时查找功能来初始化其他一些后台类 假设我有一个接口Dependency injection 如何使用MEF初始化一组类?,dependency-injection,prism,mef,Dependency Injection,Prism,Mef,我在我的应用程序中使用prism/mvvm/mef,加载标有ViewExport(Region)的所有视图效果很好(我使用的是StockTraderRI AutoPopulateExportedViewsBehaviour) 现在我想使用这个运行时查找功能来初始化其他一些后台类 假设我有一个接口 public interface ITable { } 我从这个接口得到了很多类 有没有办法标记这些派生类,让MEF在运行时创建它们,并将它们添加到某种列表或容器中 就像进入一个没有显示的区域,我想是
public interface ITable
{
}
我从这个接口得到了很多类
有没有办法标记这些派生类,让MEF在运行时创建它们,并将它们添加到某种列表或容器中
就像进入一个没有显示的区域,我想是吧?我如何在MEF中实现这一点?当然有!
使用Export属性标记继承接口的类,并在另一个类中使用attribute[ImportMany]创建泛型类型ObservableCollection的属性。应该有人能做到。当然有!
使用Export属性标记继承接口的类,并在另一个类中使用attribute[ImportMany]创建泛型类型ObservableCollection的属性。应该这样做。如果您使用MEF而不是Unity,您还可以在引导程序中使用容器调用:
var tables = Container.GetExportedValues<ITable>();
var tables=Container.GetExportedValues();
容器是MefBootTrapper的公共财产 如果使用MEF代替Unity,还可以在引导程序中使用容器调用:
var tables = Container.GetExportedValues<ITable>();
var tables=Container.GetExportedValues();
容器是MefBootTrapper的公共财产 就这些?但MEF如何知道哪些东西属于哪个集合?按泛型类型?是的,实际上您的不同类将用[Export(typeof(ITable))]修饰,MEF将查找继承或对应于泛型类型的任何类以满足您的集合,创建实例并将它们添加到集合中。仅此而已?但MEF如何知道哪些东西属于哪个集合?通过泛型类型?是的,实际上您的不同类将被[Export(typeof(ITable))]修饰,MEF将寻找继承或对应于泛型类型的任何类以满足您的集合,创建实例并将它们添加到集合中。它是替代依赖项注入容器。不过,MEF是我的首选。它是替代依赖项注入容器。不过,MEF是我的首选。