这几天在反复思考一个问题,是否应该将域实体的约束条件直接附加在域实体上呢?
例如:
public class man
{
private int _age;
public int age
{
get{return(_age);}
set
{
if(value<Age.Min||value>Age.Max)
{
throw new EntryValidateException("年龄超过范围");
}
_age=value;
}
}
}

这种方式,似乎更加效法自然一些
不然的话,就要用下面的形式了,那么,这个实体可真是超级贫血了
public class man
{
private int _age;
public int age
{
get{return(_age);}
set
{_age=value;
}
}
}

然后Bll层里,对该实体的操作,都需要对其进行判断
public class ManBll
{
public void Update(object obj)
{
if(obj.Age>Age.Max||obj.Age<Age.Min)
{
throw new EntryValidateException("年龄超出范围");
}
....
}
}
这样的问题在于,业务逻辑层里,操作此DOMAIN对象的所有代码,都需要对其验证

我的想法是前一种更加合理一些,虽然对属性的验证,也是属于业务逻辑范畴的一部分,但是我想,这部分逻辑是应该属于业务对象本身潜在的规则,而且是必需的规则,依附于业务对象本身上面比较妥一些
不知道各位如何处理的,希望指点一二