我有以下类结构:
public abstract class PresenterBase
{
public static Dictionary<string, MethodInfo> methodsList;
public void Bind()
public void Initialize();
}
public class DevicePresenter: PresenterBase
{
public void ShowScreen();
public void HandleEvents();
}
public class HomePresenter: PresenterBase
{
public void ShowScreen();
public void HandleEvents();
}
我想让 HomePresenter 和 DevicePresenter 拥有在 PresenterBase 中定义的 methodsList 静态成员的单独副本。
不幸的是,它们与上述实现共享相同的副本。
他们是替代方法吗,我可以为 HomePresenter 和 DevicePresenter 单独复制 methodsList? 我不愿意在派生类中定义 methodsList,因为将来如果有人添加另一个派生类,他将必须记住将 methodsList 添加到该类。
最佳答案
根本不要让它成为静态的。这行不通吗?
static
表示与类型关联; non-static
表示与实例关联。
我手头没有 Visual Studio 实例,但我相信您也可以在基类中标记字段 abstract
;那么编译器将要求您将它添加到任何派生类中。您绝对可以使用属性来做到这一点。
另一方面,鉴于上述代码,我可能会将抽象方法 ShowScreen()
和 HandleEvents()
添加到 PresenterBase
。
关于c# - 在每个派生类中都有单独的基类静态成员副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5337038/