当前位置:  开发笔记 > 编程语言 > 正文

如何使用静态成员创建.NET接口?

如何解决《如何使用静态成员创建.NET接口?》经验,为你挑选了2个好方法。

在.NET 3.5中,我想创建一个单例接口:

interface ISingleton 
{
  public static T Instance {get;}
}

当然,这不起作用,但我喜欢.有什么建议?

编辑:我只是想知道所有singeltons将有一个名为Instance的类类型的静态属性.它总是在那里.界面将是表达这一点的明确方式.



1> Matthew Brub..:

据我所知,接口不能成为Singleton,因为它实际上并不存在.接口是实现必须遵循的合同.因此,实现可以是单例,但接口不能.


C#中的AFAIK接口不能有静态成员.但是,存在一些静态成员有用的实例.例如,您需要一个CONTRACT实现,但所有这些实现碰巧需要一个在对象实例之间共享的分类器.这不是我第一次需要这样的东西.

2> Andrew Kenna..:

虽然我同意其他海报上的单例非常过度使用,但是你的问题的一个可能的解决方案是提供一个抽象基类,其中包含派生单例的类型参数:

public abstract class Singleton where T : Singleton
{
  private static T _instance;

  public static T Instance
  {
    get { return _instance; }
    protected set { _instance = value; }
  }
}

从Singleton派生的任何类都将具有正确类型的静态Instance属性:

public class MySingleton : Singleton
{
    static MySingleton()
    {
        Instance = new MySingleton();
    }

    private MySingleton() { } 
}

在使用类似的东西之前,你应该考虑是否需要单例,或者你是否更适合使用普通的静态类.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有