Производный класс всегда должен быть одноэлементным - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь создать базовый класс с некоторыми функциями, общими для всех производных классов.И все производные классы должны быть синглетонами.Ниже псевдо-пример.

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 Ответ

1 голос
/ 24 апреля 2019
Базовый класс

не знает об остальной части объекта, который будет создан. в основном, когда вы наследуете от базового класса, дополнительная логика добавляется в производный класс скрыто от базового класса. следовательно, создание экземпляров в базовом классе не является возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...