0
所以我想要做的是一样的东西......注册命名的服务在性能
[Name("MY_CLASS")]
public class MyClass : IMyInterace {...}
也许
public class MyClass : IMyInterace {
string Name => "MY_CLASS"; // part of interface
}
,然后东西autofac像...
builder.RegisterAssemblyTypes(asm)
.Where(...) // lazy typing that properly
.Named<IMyInterface>(x => x.Name);
是否有这样的可能?
PS:我知道,我可以只注册这些实现的命名服务,但有两个缺点:
- 许多条目,还有一两件事,当你添加到忘记新的东西
- 名称和类是在不同的地方,而不是漂亮的一个地方
目前尚不清楚您想要实现什么......您为什么需要使用这些动态密钥注册您的组件?但是你可以查看元数据支持:http://docs.autofac.org/en/latest/advanced/metadata.html – nemesv
@nemesv:基本上我们从API获得这些魔术键,然后切换行为。目前它就像'switch(key)case“MY_CLASS”[code]'。所以很显然,用'IIndex替换'并且摆脱大约50个条件是很好的... –
FrankyBoy
简短答案是肯定的!我会建议对第一个..因为类继承应该是使他们不纯正的因素 – Seabizkit