public Mammal CreateSpecific(Type type, MammalTypes mammalEnumType) { var mammalInstance = (Mammal)Activator.CreateInstance(type); return(mammalInstance.Is(mammalEnumType) ? mammalInstance : null); }
public abstract bool Is(MammalTypes mammalType);
public Mammal Create(MammalTypes mammalType) { return(_mammalTypes .Select(type => CreateSpecific(type, mammalType)) .First(mammal => mammal != null)); }
// other specific members public override bool Is(MammalTypes mammalType) { return(mammalType == MammalTypes.Cat); }