I am trying to perform a simple implementation of the Specification template at my domain level.
If I have a static class full of specifications like this:
public static class FooSpecifications
{
public static Func<Foo, bool> IsSuperhuman
{
get
{
return foo => foo.CanShootLasersOutOfItsEyes && foo.CanFly;
}
}
}
Then I can do wonderful things like this:
IEnumerable<Foo> foos = GetAllMyFoos();
var superFoos = foos.Where(FooSpecifications.IsSuperhuman);
I can also add the bool method to Foo to determine if a particular instance meets the specification:
public bool Meets(Func<Foo, bool> specification)
{
return specification.Invoke(this);
}
Given that Foo, like all my domain objects, extends DomainObject, is there a way I can put a generic implementation of Meets () in DomainObject to keep me in the Meets () implementation separately in each entity?
David source
share