在.NET 3.5中,我想创建一个单例接口:
interface ISingleton{ public static T Instance {get;} }
当然,这不起作用,但我喜欢.有什么建议?
编辑:我只是想知道所有singeltons将有一个名为Instance的类类型的静态属性.它总是在那里.界面将是表达这一点的明确方式.
据我所知,接口不能成为Singleton,因为它实际上并不存在.接口是实现必须遵循的合同.因此,实现可以是单例,但接口不能.
虽然我同意其他海报上的单例非常过度使用,但是你的问题的一个可能的解决方案是提供一个抽象基类,其中包含派生单例的类型参数:
public abstract class Singletonwhere 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() { } }
在使用类似的东西之前,你应该考虑是否需要单例,或者你是否更适合使用普通的静态类.