[英]Ninject Dependency Injection Using Reflection
public DefaultRepositoryRegistry(IKernel kernel)
{
foreach (var tuple in DefaultContractList())
{
var iRepo = tuple.Item1;
var repo = tuple.Item2;
}
}
private static IEnumerable<Tuple<Type, Type>> DefaultContractList()
{
var contractList = new List<Tuple<Type, Type>>()
{
#region Mongo
Tuple.Create(typeof (IMongoRepository), typeof (MongoRepository)),
#endregion Mongo
};
return contractList;
}
我無法進行動態綁定,例如
foreach (var tuple in DefaultContractList())
{
var iRepo = tuple.Item1;
var repo = tuple.Item2;
kernel.Bind<iRepo>().To<repo>();
}
關於為什么 Ninject 不接受這種類型的綁定有什么幫助嗎? 我這樣做是為了讓人們可以在不同的依賴注入框架中使用相同的一組服務。
此語法可能無法編譯:
foreach (var tuple in DefaultContractList())
{
var iRepo = tuple.Item1;
var repo = tuple.Item2;
kernel.Bind<iRepo>().To<repo>();
}
尖括號內的位稱為類型參數(例如<iRepo>
和<repo>
),它們應該是實際的類型名稱,而不是System.Type
類型的變量。 不過,碰巧的是,Ninject 有另一種綁定形式,它可能對您非常有用:
foreach (var tuple in DefaultContractList())
{
var iRepo = tuple.Item1;
var repo = tuple.Item2;
kernel.Bind(iRepo).To(repo);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.