C# 无法将单例类强制转换为接口
我有一个C# 无法将单例类强制转换为接口,c#,interface,casting,singleton,C#,Interface,Casting,Singleton,我有一个Logger类,它是单例实现的。这个类很简单,方法也很少,只有一个静态属性,实例。与所有单例类一样,我通过Logger.instance属性访问唯一实例 我从Logger类中提取了一个接口(使用VisualStudio重构上下文菜单)。提取后,接口包含这几个方法的签名,并且由于实例属性是静态,因此它不包括在ILogger接口中 所有这些之后,我无法在运行时将Logger.Instance转换为ILogger。我的方法有什么问题?您是否真的声明了Logger实现了ILogger publi
Logger
类,它是单例实现的。这个类很简单,方法也很少,只有一个静态
属性,实例
。与所有单例类一样,我通过Logger.instance
属性访问唯一实例
我从Logger
类中提取了一个接口(使用VisualStudio重构上下文菜单)。提取后,接口包含这几个方法的签名,并且由于实例
属性是静态
,因此它不包括在ILogger
接口中
所有这些之后,我无法在运行时将
Logger.Instance
转换为ILogger
。我的方法有什么问题?您是否真的声明了Logger
实现了ILogger
public sealed class Logger : ILogger
{
...
}
如果是这样的话,应该没问题。请发布一些代码,以便我们可以尝试诊断问题
如果没有,这就是问题所在,而且很容易解决:)您是否真的声明了
Logger
实现了ILogger
public sealed class Logger : ILogger
{
...
}
如果是这样的话,应该没问题。请发布一些代码,以便我们可以尝试诊断问题
如果没有,这就是问题所在,而且很容易解决:)您描述的示例对我来说很好。我举了一个小例子,也许你看到了一些不同:
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);
}
}
你描述的例子对我很有用。我举了一个小例子,也许你看到了一些不同:
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);
}
}
你得到的异常是什么?关键是,因为我在编写记录器之后提取了接口,所以我忘记了通过记录器实现接口。我的意思是,我一开始并没有被计划好。希望这会有所帮助。您会遇到什么异常?问题是,因为我在编写记录器之后提取了接口,所以忘记了通过记录器实现接口。我的意思是,我一开始并没有被计划好。希望这有帮助。猜猜常见错误是一种智慧。谢谢。猜猜常见的错误是什么是一种智慧。谢谢