public interface IBasePresenter
{
}
public interface IJobViewPresenter : IBasePresenter
{
}
public interface IActivityViewPresenter : IBasePresenter
{
}
public class BaseView
{
public IBasePresenter Presenter
{
get;
set;
}
}
public class JobView : BaseView
{
public IJobViewPresenter JobViewPresenter
{
get { this.Presenter as IJobViewPresenter;}
}
}
public class ActivityView : BaseView
{
public IActivityViewPresenter ActivityViewPresenter
{
get { this.Presenter as IActivityViewPresenter;}
}
}
Предположим, что мне нужно свойство IBasePresenter для BaseView.
Теперь это свойство наследуется JobView и ActivityView, но если мне нужна ссылка на объект IJobViewPresenter в этих производных классах, тогда мне нужно ввести свойство cast IBasePresenter в IJobViewPresenter или IActivityPresenter (которого я хочу избежать) или создать JobViewPresenter и ActivityViewPresenter на производных классах (как показано выше).
Я хочу избежать приведения типов в производных классах и все еще иметь ссылку на IJobViewPresenter или IActivityViewPresenter, и при этом в BaseView по-прежнему есть IBasePresenter.
Есть ли способ, которым я могу этого достичь?