2010-07-09 32 views
2

我想爲單身人士創建界面。 但是接口不能禁用公共構造函數並描述靜態方法。如何解決這個問題?如何描述沒有構造函數和靜態方法的c#接口?

+0

你有問題要問? – Oded 2010-07-09 07:02:35

+0

我必須是一個算命的人來理解這個問題:( – 2010-07-09 07:03:42

+0

你可能想檢查一下 - http://stackoverflow.com/questions/2855245/abstract-base-class-to-force-each-derived-classes-待辦事項 – 2010-07-09 07:03:50

回答

4

基本上,你不能。接口不能包含靜態方法,並且不能對可用的構造函數進行任何約束。

您可能會感興趣我的static interfaces概念,這將允許執行特定的靜態成員的想法是目前 - 但它不會讓你執行一個構造的沒有

+0

+1對於靜態接口 – 2010-07-09 07:14:35

5

你不能有一個ISingleton接口有兩個原因:

  1. 接口不能有靜態 成員
  2. 接口不能包含 構造

你可以有一個ASingleton抽象類,如果你喜歡。

+0

錯誤:靜態成員XXX不能成爲標記爲重寫,虛擬或抽象。 – SkyN 2010-07-09 07:26:03

0

正如其他人所說,你不能使用一個接口。你可以做的是創建一個通用的單例類:

public static class Singleton<T> where T : new() 
{ 
    public static T Instance { get; private set; } 

    static Singleton() { Instance = new T(); } 
} 

這樣你就可以爲所有單例使用一個泛型類。當然,對於不同的類型(可以改變實現實例的接口或派生類),你將不能以不同的方式初始化單例。