在每个派生类中具有基类静态成员的单独副本

Tus*_*are 4 .net c# static-classes

我有以下类结构:

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();
}
Run Code Online (Sandbox Code Playgroud)

我希望HomePresenter和DevicePresenter具有在PresenterBase中定义的methodsList静态成员的单独副本.

不幸的是,他们与上述实现共享相同的副本.

它们是替代方法,我可以为HomePresenter和DevicePresenter单独复制methodsList吗?我不愿意在派生类中定义methodsList,因为将来如果有人添加另一个派生类,他必须记住将methodsList添加到该类.

a C*_*CVn 6

不要让它静止.那不行吗?

static与该类型相关的手段; 非static意味着与实例相关联.

我没有方便的Visual Studio实例,但我相信你也可以abstract在基类中标记该字段; 然后编译器将要求您将其添加到任何派生类.您绝对可以使用酒店.

在另一方面,考虑到上面的代码,我可能会添加抽象方法ShowScreen()HandleEvents()PresenterBase.