依赖注入域模型的技术

时间:2010-07-28 11:00:24

标签: dependency-injection domain-model

我有域模型类型。其众多属性中的一个需要ITranslationService提供将其返回值转换为适当语言的能力。

我应该将ITranslationService注入到域模型类型的构造函数中(因此必须在实例化类型的任何地方进行更改,并且必须关注通过NhIbernate检索时的初始化),即使它被一小部分用于类型(许多属性之一);或者我可以使用其他功能模式吗?

有没有人有他们可以分享的相关经验?

2 个答案:

答案 0 :(得分:4)

我不希望域对象进行翻译 - 而是使用带有域对象(或相关属性值)的翻译服务作为参数,并返回翻译后的值。例如,你可以简单地做

var translatedString = yourServiceInstance.Translate(theDomainObject.Property);

答案 1 :(得分:1)

  

我应该注射吗?   ITranslationService进入   域模型类型的构造函数

是的,可能有意义,具体取决于您的情况。如果你总是避免将服务注入到实体中,那么这可能导致anemic domain model这是一种反模式。

需要实例化实体的代码可以通过使用工厂来屏蔽额外的构造函数参数,该工厂负责依赖注入。

NHibernate还可以通过构造函数将服务注入实体:http://fabiomaulo.blogspot.com/2008/11/entities-behavior-injection.html