2010-11-09 51 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); 
    } 
} 
相关问题