Вот мой конкретный репозиторий, производный от абстрактного базового класса
public class DepartmentRepository : RepositoryBase<Department>, IDepartmentRepository
public abstract class RepositoryBase<T> : IRepository<T> where T : class, IPersistantBusinessObject
Вот мои интерфейсы
public interface IDepartmentRepository : IRepository<Department>
public interface IRepository<T> where T : IPersistantBusinessObject
public interface IPersistantBusinessObject { ... }
А вот мои сущности
public class Department : BusinessObjectBase
public abstract class BusinessObjectBase : IPersistantBusinessObject
Как преобразовать мой DepartmentRepository в общий IRepository?
DepartmentRepository rep = new DepartmentRepository();
(IRepository<IPersistentBusinessObject>)rep; // this doesn't work
Идеи?Если вам интересно, это приложение asp.net MVC3, использующее шаблон репозитория.Я над архитектором интерфейсов?Как мне теперь использовать универсальный репозиторий?
Спасибо.
РЕДАКТИРОВАТЬ: Вот мой интерфейс IRepository.На вопрос о том, почему мне нужно привести в IRepository, это на самом деле только для того, чтобы я мог использовать метод «SaveChanges», потому что я хочу перехватывать любые исключения из базы данных и обрабатывать их обычным способом.
public interface IRepository<T> where T: IPersistantBusinessObject
{
IQueryable<T> Retrieve();
T Retrieve(int id);
IQueryable<T> RetrieveActiveAndInActive();
T RetrieveActiveAndInActive(int id);
void Add(T domainObject);
void SaveChanges();
void Delete(T domainObject);
void Delete(int id)
}