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