[英]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.