2015-05-07 3 views
1

У меня есть следующие интерфейсы:Убедитесь, что общий тип реализует определенный интерфейс

public interface IView<TViewModel> 
{ 
    TViewModel ViewModel { get; set; } 
} 

public interface IViewModel : INotifyPropertyChanged 
{ 
} 

Я хотел бы, чтобы убедиться, что общий TViewModel всегда класс, который реализует интерфейс IViewModel. Я мог бы сделать следующее:

public interface IView 
{ 
    IViewModel ViewModel { get; set; } 
} 

Но тогда я не стал бы иметь доступ ко всем свойствам и методам конкретного класса ViewModel.

Как я могу убедиться, что TViewModel всегда является классом, который реализует интерфейс IViewModel?

+5

'где TViewModel: IViewModel'? Но это всего лишь основные [generics] (https://msdn.microsoft.com/en-us/library/d5x73970.aspx). –

+0

Я, должно быть, пропустил эту страницу ... Извините за основной вопрос. Если вы хотите сделать это ответом, я бы назвал это ответом. Благодарю. – Choub890

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

4

Укажите ограничение общего типа, используя where clause.

public interface IView<TViewModel> where TViewModel : IViewModel 
{ 
    TViewModel ViewModel { get; set; } 
} 
Смежные вопросы