可以使用ninject配置基于类的注入(而不是接口)吗?

时间:2014-06-13 15:26:33

标签: c# ninject

可以使用Ninject配置基于非接口的注入吗?

public EntityController([Named("EntityServiceName")] EntityService service)

而不是

public EntityController([Named("EntityServiceName")] IEntityService service)

我正在努力做到这一点并遇到问题,并且想知道问题是否是我没有使用接口。

其他信息: 也许我不在这里,但这是我们希望的好处: 我们遵循带有洋葱/端口和适配器架构的DDD模式,因此我们有一个域项目,其中包含具体的域对象和域服务以及定义的外部接口,一个实现域中定义的外部接口的基础架构项目,以及最后是一个用于揭露它们的web api项目。

web api的控制器需要注入域服务的实例。但由于接口和域服务之间存在1:1的关系,因此只需为域服务添加接口就不必要了。

因此,为域服务创建接口确实没有任何好处,但我仍然希望通过Ninject配置和注入它们。

1 个答案:

答案 0 :(得分:1)

你可以......是的。但它完成的并不多。这是一个例子:

kernel.Bind<List<string>>().ToConstant(new List<string>(){"Foo", "Bar"});

但如果您不使用界面,那么您实际上并没有从依赖注入中获得太多好处。显然,这对ICollection没有任何帮助。我想你可以用它来设置默认的类值,并且仍然可以获得单元测试的优势......但是使用Interfaces这样做通常会好得多,因为你可以做更好的模拟。我只会为最基本的课程这样做。