gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:19:16 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com