我想按类型绑定(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/