У меня есть следующие классы/интерфейсы:
public abstract class AbstractBasePresenter<T> : IPresenter<T>
where T : class, IView
{
}
public interface IPresenter<T>
{
}
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
//where TP : AbstractBasePresenter<???>
{
}
public interface IView {}
Можно ли каким-либо образом ограничить TP на IView < > как класс, который наследуется от AbstractBasePresenter?
Или моя единственная альтернатива для создания не общего интерфейса IPresenter, а затем обновление IPresenter для его реализации, а затем использование проверки "TP: IPresenter"?
Спасибо
Update:
Предлагаемый ниже ответ не работает:
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
where TP : AbstractBasePresenter<IView<TV,TE,TP>>
{
}
У меня есть интерфейс, объявленный как:
public interface IInsuredDetailsView : IView<InsuredDetailsViewModel, InsuredDetailsEditModel, IInsuredDetailsPresenter>
{ }
public interface IInsuredDetailsPresenter : IPresenter<IInsuredDetailsView>
{ }
Компилятор жалуется, что IInsuredDetailsPresenter не назначается AbstractBasePresenter >