A tiny bit better (warning, GMail syntax checked)
1) Base "should" be at the end if type names
2) Get implies single entity, Find implies collection
3) Make sure you have a base interface for Entities if you might need
polymorphic collections (like Managers and Employees in a single
query) that returns only the base class.
4) Return IList<T> not List<T> so you can swap the returned type easily.
5) You don't need to provide both the provider interface and entity
type, it can infer the provider type.

interface IEntityProviderBase
{
  EntityBase Get(int id);
  IList<EntityBase> FindAll();
}

interface IEntityProvider<T> : IEntityProviderBase
  where T: BaseEntity
{
  public new T Get(int id);
  public new List<T> FindAll();
}

interface IUserProvider : IEntityProvider<User>
{
  User FindByLastName(string lastName);
}

class ProviderFactory<T>
  where T: EntityBase
{
  public static IEntityProvider<T> CreateProvider(){}
}

IUserProvider x = ProviderFactory<IUserProvider>.CreateProvider();

User y = x.FindBy...

IList<User> yy = x.FindAll();


--
"It's not the quality of journalism that is sinking e-media companies, it
the quality."  Thom Calandra - CBS Marketwatch

Marc C. Brooks
http://musingmarc.blogspot.com

===================================
This list is hosted by DevelopMentor�  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to