我有一个Logger
类,它实现了单例。该类很简单,只有很少的方法和一个static
属性Instance
。像所有单例类一样,我通过Logger.Instance
属性访问唯一实例。
我从Logger
类中提取了一个接口(使用Visual Studio重构上下文菜单)。提取后,接口包含这些少数方法的签名,并且由于Instance
属性为static
,因此它不包含在ILogger
接口中。
完成所有这些后,我无法在运行时将Logger.Instance
投射到ILogger
。我的方法出了什么问题?
答案 0 :(得分:3)
您是否确实声明Logger
实施了ILogger
?
public sealed class Logger : ILogger
{
...
}
如果是这样,应该没问题。请发布一些代码,以便我们尝试诊断问题。
如果没有,那就是问题,并且很容易解决:)
答案 1 :(得分: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);
}
}