Dot-Net
如何使用靜態成員創建 .NET 介面?
在 .NET 3.5 中,我想創建一個單例介面:
interface ISingleton <T> { public static T Instance {get;} }當然這不起作用,但這是我想要的。有什麼建議麼?
編輯:我只想知道所有的單例都會有一個名為 Instance 的類類型的靜態屬性。它總是在那裡。介面將是表達這一點的明確方式。
據我所知,介面不能是單例,因為它實際上並不存在。介面是實現必須遵循的契約。因此,實現可以是單例,但介面不能。
雖然我同意單例被過度使用的其他海報,但您問題的一個可能解決方案是提供一個抽象基類,其類型參數為派生單例:
public abstract class Singleton<T> where T : Singleton<T> { private static T _instance; public static T Instance { get { return _instance; } protected set { _instance = value; } } }任何從 Singleton 派生的類都將具有正確類型的靜態 Instance 屬性:
public class MySingleton : Singleton<MySingleton> { static MySingleton() { Instance = new MySingleton(); } private MySingleton() { } }不過,在使用這樣的東西之前,您應該真正考慮是否需要單例,或者您是否最好使用普通的靜態類。