【发布时间】:2018-04-21 12:05:27
【问题描述】:
在一个开源程序的NinjectModule中,我找到了这一行:
Bind <DateTime>().ToSelf()
它的目的是什么?为什么要将 DateTime 放入容器中?作者想要达到什么目的?
【问题讨论】:
标签: c# .net dependency-injection inversion-of-control ninject
在一个开源程序的NinjectModule中,我找到了这一行:
Bind <DateTime>().ToSelf()
它的目的是什么?为什么要将 DateTime 放入容器中?作者想要达到什么目的?
【问题讨论】:
标签: c# .net dependency-injection inversion-of-control ninject
这毫无意义。从容器中获取 DateTime 会给你一个例外:
Ninject.ActivationException: '错误激活 int 没有匹配 绑定可用,并且类型不可自绑定。激活 路径:
2) 将依赖 int 注入到构造函数的参数 year 中 输入日期时间
1) 日期时间请求
理论上,解决方案中可以有另一个绑定,它绑定到某个常量:
Bind<long>().ToConstant(1L);
这样您就可以根据构造函数从容器中获取带有刻度数的日期时间:
public DateTime(long ticks)
但无论如何,这将是非常糟糕的做法,我看不出有任何这样做的理由。如果您的课程依赖于 datetime 等基本类型,而不是使用 ToConstructor 或 WithConstructorArgument 方法。
【讨论】:
重复:Ninject: What does it mean to bind something to itself?
Bind<DateTime>().ToSelf()
等价于
Bind<DateTime>().To<DateTime>()
【讨论】: