У меня есть два типизированных интерфейса
public interface IComponentAreaModel<T>
public interface IComponentAreaViewModel<T>
В интерфейсе для модели представления определено свойство 'Model', которое соответствует типу интерфейса для модели:
IComponentAreaModel<T> Model { get; }
В моей фактической реализации у меня есть модель, которая реализует интерфейс 'IComponentAreaModel', который прекрасно работает:
public class ArticleModel : IComponentAreaModel<Article>
Затем я реализую модель представления следующим образом:
public class ArticleViewModel : IComponentAreaViewModel<Article>
{
public ArticleModel Model { get; }
}
И здеськомпилятор говорит мне, что у члена 'Model' нет соответствующего возвращаемого типа.Чтобы это исправить, мне нужно будет реализовать модель представления следующим образом:
public class ArticleViewModel : IComponentAreaViewModel<Article>
{
public IComponentAreaModel<Article> Model { get; }
}
Но это отстой, так как мой класс ArticleModel имеет некоторые дополнительные методы и вещи, которые не являются частью IComponentAreaModel.Поэтому, когда я хотел использовать эти методы через свойство в моем ArticleViewModel, мне пришлось бы привести объект интерфейса к реальному объекту.
Есть ли способ сообщить компилятору, что мой ArticleModel реализует IComponentAreaModel ипоэтому достаточно в качестве модели для IComponentAreaViewModel?