c# - 使用 Ninject 绑定(bind)到类型为 List<T> 的已定义对象

标签 c# ninject

我如何使用 Ninject 做到这一点

var lst=new List<IAnimal>();
lst.Add(dog);
lst.Add(cat);

kernel.Bind<List<IAnimal>>().ToInstance(lst); 

我应该用什么代替 ToInstance() 因为 Ninject 没有这个方法?

最佳答案

看起来你可以使用 ToConstant() :

kernel.Bind<List<IAnimal>>().ToConstant(lst);

尽管您可能要考虑绑定(bind) IList<IAnimal>而不是 List<IAnimal> .

编辑:根据您在下方的评论

ToMethod是另一种选择,具体取决于您的要求。这使您可以使用工厂方法,您可以在其中根据外部因素返回不同的实例。例如:

kernel.Bind<IList<IAnimal>>().ToMethod(c => Helpers.IsDark ? return _nocturnalAnimals : return _allAnimals);

关于c# - 使用 Ninject 绑定(bind)到类型为 List<T> 的已定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17849405/

相关文章:

c# - 为什么我无法在此 iText\iTextSharp 页脚表格中获取圆角?

c# - 未经检查的 block 不适用于 BigInteger?

c# - DI 构造函数的模板化重构

c# - MVC/n注入(inject) : Implementing My Own ApplicationUserManager

c# - 将 IAuthorizationFilter 与 Ninject 和 EF 一起使用会给出 DbContext has been disposed 错误

c# - 如何删除包含文件的文件夹?

c# - Umbraco - 以编程方式通过 ID 获取节点

c# - 当鼠标在 datagridview 行中时显示每个项目的工具提示

c# - Ninject 按参数名称绑定(bind)

caSTLe-windsor - 使用不是为 IOC 设计的遗留应用程序避免服务定位器反模式