【发布时间】:2010-12-13 15:19:33
【问题描述】:
我正在使用 ASP.NET 中的 MVP,想看看是否有更简单/更清洁的方法来做到这一点。
我有一个有观点的演示者。事实证明,我可以在同一应用程序区域的其他视图/演示器中重用某些视图属性和演示器方法。
假设我有一个 Bar,它在逻辑上是一个 Foo。基本演示者 FooPresenter 具有 Bar 及其兄弟的通用逻辑。 IFoo 视图也有共同的属性。
我希望能够将视图视为 FooPresenter 中的 IFooView,并将视图视为 BarPresenter 中的 IBarView 并使其成为相同的实例,因此我在视图实现中获得了所有 Foo 内容,aspx页面。
这是我所拥有的:
public interface IFooView {
// foo stuff
}
public interface IBarView : IFooView {
// bar stuff
}
public abstract class FooPresenter<T> where T : IFooView {
public FooPresenter(T view) {
this.view = view;
}
private IFooView view;
public T View
{
get { return (T)view; }
}
public void SomeCommonFooStuff() { }
}
public class BarPresenter : FooPresenter<IBarView> {
public BarPresenter (IBarView view)
: base(view) {
}
public void LoadSomeBarStuff() {
View.Stuff = SomeServiceCall();
}
}
有趣的部分是通过执行转换的基类中的属性访问子类中的视图界面。对此有什么想法,或者关于我如何能够使其更易于维护的建议?
【问题讨论】:
标签: c# asp.net inheritance interface mvp