2015-11-28 5 views
0

Как я могу достичь того, что показано ниже?"где" общее ограничение ограничения?

public interface IRepositoryFactory 
{ 
    TRepository Create<TRepository>(DbContext context) where TRepository : IRepository<*anything derived from EntityBase*>; 
} 

Я хочу, чтобы иметь возможность достичь следующего.

public interface IUserRepository : IRepository<User> 
{   
} 

var repository = factory.Create<IUserRepository>(context); 

ответ

3

Просто добавьте еще один общий тип и дать, что тип ограничения:

public interface IRepositoryFactory 
{ 
    TRepository Create<TRepository, TEntity>(DbContext context) 
     where TRepository : IRepository<TEntity> 
     where TEntity : EntityBase; 
} 
+0

В любом случае, я мог бы избежать необходимости 'factory.Create (контекст);' без необходимости specifie 'Пользователь ', который неявный? –

+0

В этом случае нет, поскольку параметры метода не помогают. – DavidG

Смежные вопросы