C# MEF 不能做类型绑定(bind)?

标签 c# .net c#-4.0 mef

我想按类型绑定(bind)到实例化的对象。

我现在要做的:

var catalog = new AssemblyCatalog(typeof(...).Assembly);

var container = new CompositionContainer(catalog); 
    var batch = new CompositionBatch(); 
var mySamurai = new Samurai(); 
batch.AddPart(mySamurai);//I would prefer the type not an object...    
    container.Compose(batch);
mySamurai.Attack();

这是可行的,但我想做类似的事情:

var catalog = new AssemblyCatalog(typeof(...).Assembly);
var container = new CompositionContainer(catalog);
var batch = new CompositionBatch();

batch.AddPart(typeof(Samurai));//HERE container.Compose(batch);        
var mySamurai = new Samurai();
mySamurai.Attack(); 

MEF 可以吗?

最佳答案

通常,您在 MEF 中使用属性设置导出和导入,而不是像 Ninject 那样在代码中配置它们。

即使 MEF 没有开箱即用地“在代码中配置”,您仍然可以使用 MEFContrib项目用 factory export provider 做到这一点.

更新:在 MEF2-Preview3 中 attribute-less registration已添加。

此外,Mark Seemann blogged通过巧妙地使用属性导出和泛型,即使不使用新的无属性注册也可以“注册”类型。

关于C# MEF 不能做类型绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5108592/

相关文章:

c#-4.0 - 从图像和 mp3 文件创建 C# MP4 视频

c# - Asp.net 长时间运行的后台任务。最佳实践?

c# - 删除 wpf 窗口上显示的奇怪的黑色面板或工具栏

c# - 使用多列对数据表进行降序排序 C#

c# - 在 ProgressBar 控件模板中为 WPF ImageBrush 设置动画

.net - 微软问:单列出还是双列出?使用每种方法的利弊是什么?

c# - 如何知道线程执行是否终止?

c# - 是否可以在两个项目中声明一个部分类

.net - 如何使用 Ninject 在依赖链下传递参数

c# - WCF 4.0 - 使用 REST 服务模板返回 JSON WebFaultException