可以使用Ninject配置基于非接口的注入吗?
public EntityController([Named("EntityServiceName")] EntityService service)
而不是
public EntityController([Named("EntityServiceName")] IEntityService service)
我正在努力做到这一点并遇到问题,并且想知道问题是否是我没有使用接口。
其他信息: 也许我不在这里,但这是我们希望的好处: 我们遵循带有洋葱/端口和适配器架构的DDD模式,因此我们有一个域项目,其中包含具体的域对象和域服务以及定义的外部接口,一个实现域中定义的外部接口的基础架构项目,以及最后是一个用于揭露它们的web api项目。
web api的控制器需要注入域服务的实例。但由于接口和域服务之间存在1:1的关系,因此只需为域服务添加接口就不必要了。
因此,为域服务创建接口确实没有任何好处,但我仍然希望通过Ninject配置和注入它们。
答案 0 :(得分:1)
你可以......是的。但它完成的并不多。这是一个例子:
kernel.Bind<List<string>>().ToConstant(new List<string>(){"Foo", "Bar"});
但如果您不使用界面,那么您实际上并没有从依赖注入中获得太多好处。显然,这对ICollection没有任何帮助。我想你可以用它来设置默认的类值,并且仍然可以获得单元测试的优势......但是使用Interfaces这样做通常会好得多,因为你可以做更好的模拟。我只会为最基本的课程这样做。