В настоящее время я разрабатываю приложение MVC 3 с EF и шаблоном Repository. Я создал общий интерфейс следующим образом:
interface IGenericRepository<T>
{
}
И абстрактный класс следующим образом:
abstract class GenericRepository<TContext ,T> : IGenericRepository<T>
where TContext : DbContext, new()
{
}
После этого мой репо наследует их обоих так:
interface ICardRepository : IGenericRepository<Card>
{
}
и
class CardRepository : GenericRepository<EfContext, Card>,
ICardRepository
{
}
В Unity я регистрирую интерфейс и класс следующим образом:
container.RegisterType<ICardRepository, CardRepository>();
Теперь вопрос: могу ли я использовать IGenericRepository вместо ICardRepository
?
Как это:
container.RegisterType<IGenericRepository<Card>, CardRepository>();
Теоретически я могу, но поскольку я до сих пор не понимаю, как работает этот шаблон, я не совсем уверен, что я что-то не сломал или пропустил.