我正在尝试在我的域层中简单地实现规范模式。
如果我有一个充满这样规范的静态类:
public static class FooSpecifications
{
public static Func<Foo, bool> IsSuperhuman
{
get
{
return foo => foo.CanShootLasersOutOfItsEyes && foo.CanFly;
}
}
}
然后我可以做这样奇妙的事情:
IEnumerable<Foo> foos = GetAllMyFoos();
var superFoos = foos.Where(FooSpecifications.IsSuperhuman);
我还可以将 bool 方法添加到 Foo 以确定特定实例是否符合规范:
public bool Meets(Func<Foo, bool> specification)
{
return specification.Invoke(this);
}
鉴于 Foo 和我所有的域实体一样,扩展了 DomainObject,有没有办法可以将 Meets() 的通用实现放入 DomainObject 以节省我在每个实体中分别实现 Meets()?