2010-11-09 58 views
0

我有一個Logger類,它以單例實現。這個課程很簡單,只有很少的方法和一個static財產,Instance。像所有單身人士課程一樣,我通過Logger.Instance屬性訪問唯一實例。不能將單例類轉換爲接口

我從Logger類中提取了一個接口(使用Visual Studio重構上下文菜單)。提取後,界面包含這幾種方法的簽名,並且由於Instance屬性爲static,因此它不包含在​​接口中。

畢竟,我不能在運行時將Logger.Instance轉換爲​​。我的方法有什麼問題?

+0

你有什麼異常? – leppie 2010-11-09 11:13:20

+0

關鍵是,由於我在寫入記錄器後提取了界面,我忘記了Logger實現界面。我的意思是我一開始並沒有計劃。希望這可以幫助。 – Xaqron 2010-11-09 11:29:52

回答

3

您是否確實宣佈Logger執行​​?

public sealed class Logger : ILogger 
{ 
    ... 
} 

如果是這樣,它應該沒問題。請張貼一些代碼,以便我們可以嘗試診斷問題。

如果沒有,這就是問題所在,而且它很容易固定:)

+0

猜測什麼是常見錯誤是一種智力。謝謝。 – Xaqron 2010-11-09 11:24:10

1

的例子中,你描述的優秀作品對我來說。我做了一個小例子,也許你看到一些區別:

class Program 
{ 
    static void Main(string[] args) 
    { 
     ILogger logger = Logger.GetLogger(); 
     logger.LogMessage("Hello"); 
    } 
} 

public interface ILogger 
{ 
    void LogMessage(string message); 
} 

public class Logger : ILogger 
{ 
    private static Logger instance; 

    public static Logger GetLogger() 
    { 
     return instance ?? (instance = new Logger()); 
    } 

    public void LogMessage(string message) 
    { 
     Console.WriteLine(message); 
    } 
} 
相關問題