小编Rob*_*elo的帖子

在C#中实现单例可继承类

我发现在C#中你可以实现一个Singleton类,如下所示:

class Singleton
{

    private static Singleton _instance;

    public static Singleton Instance
    {
        get { return _instance ?? (_instance = new Singleton()); }
    }

    protected Singleton() { }
}
Run Code Online (Sandbox Code Playgroud)

适用于类型实例Singleton,即:

var a = Singleton.Instance;
var b = Singleton.Instance;
Console.WriteLine(ReferenceEquals(a, b)); //Prints True.
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要Singleton的派生类也遵循Singleton模式,即:

class A:Singleton
{ ... }
A a = A.Instance;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,静态成员InstanceSingleton类访问并创建一个Singleton不是目标的实例.此外,此解决方案还存在两个主要问题:

  • 派生类可以实现自己的构造函数并松散Singleton Pattern.
  • 如果存在另一个实例,Singleton则派生类将引用较少派生的实例

我的问题是:是否有另一种方法在C#中实现Singleton类,确保派生类也是单例?

c# inheritance singleton

6
推荐指数
2
解决办法
1万
查看次数

以动态语言键入检查

众所周知,当我们使用Python等动态语言时,我们不必担心类型.因为动态类型让我们无需担心.即便如此,我们也可以使用函数知道变量的类型type()(在Python中).所以我的问题是:用动态语言进行类型检查有什么好处?

dynamic

3
推荐指数
1
解决办法
336
查看次数

标签 统计

c# ×1

dynamic ×1

inheritance ×1

singleton ×1