派生 class 应该始终是单例
Derived class should always be singleton
我正在尝试创建一个基础 class,其中一些功能在所有派生的 class 之间共享。所有派生的 classes 都应该是单例。下面是一个伪例子。
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 基础class?
base class 不知道要实例化的对象的其余部分。
基本上,当您从基础 class 派生时,在派生 class 中添加的额外逻辑
对基地 class 隐藏。因此,在基础 class 中进行实例化不是
可能。
我正在尝试创建一个基础 class,其中一些功能在所有派生的 class 之间共享。所有派生的 classes 都应该是单例。下面是一个伪例子。
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 基础class?
base class 不知道要实例化的对象的其余部分。 基本上,当您从基础 class 派生时,在派生 class 中添加的额外逻辑 对基地 class 隐藏。因此,在基础 class 中进行实例化不是 可能。