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;} } }
Suppose I need the IBasePresenter property in BaseView. Now this property is inherited by JobView and ActivityView, but if I need a reference to the IJobViewPresenter object in these derived classes, then I need to enter the cast IBasePresenter property in IJobViewPresenter or IActivityPresenter (which I want to avoid) or create JobViewPresenter and ActivityViewPresenter on the derived classes (as shown above )
I want to avoid type casting in derived classes and still have a link to IJobViewPresenter or IActivityViewPresenter and still have an IBasePresenter in BaseView.
Is there any way I can achieve this?
source share