派生类应始终为单例

时间:2019-04-24 15:05:34

标签: c# inheritance singleton

我试图创建一个基类,并在所有派生类之间共享某些功能。并且所有派生类都应为Singletons。下面是一个伪示例。

class ExtensionSettings
{
    public string GetConfigHtml()
    {
        // creat conifig html for all properties
    }

    public void SaveSettings()
    {
        // save stuff
    }
}

class SettingsA : ExtensionSettings
{
    private static SettingsA instance;
    public static SettingsA Instance {get {return instance ?? (instance = new SettingsA());}}

    public string setting1{get;set;}
    public string setting2{get;set;}
}

class SettingsB : ExtensionSettings
{
    private static SettingsB instance;
    public static SettingsB Instance {get {return instance ?? (instance = new SettingsB());}}

    public string setting1{get;set;}
    public string setting2{get;set;}
}


static void Main(string[] args)
{
    System.Console.WriteLine(SettingsA.Instance.setting1);
    System.Console.WriteLine(SettingsB.Instance.setting2);
}

是否可以将实例化部分移至ExtensionSettings基类?

1 个答案:

答案 0 :(得分:1)

基类不知道要实例化的对象的其余部分。 基本上,当您从基类派生时,在派生类中添加的额外逻辑 对基类隐藏。因此,在基类中进行实例化不是 可能。