代码之家  ›  专栏  ›  技术社区  ›  Xaqron

无法将Singleton类强制转换为接口

  •  0
  • Xaqron  · 技术社区  · 14 年前

    我有一个 Logger 类,该类实现为singleton。这个类很简单,方法很少,只有一个 static 财产, Instance . 像所有的单例类一样,我通过 Logger.Instance 财产。

    我从中提取了一个接口 记录器 类(使用Visual Studio重构上下文菜单)。提取后,接口包含这几个方法的签名,因为 实例 财产是 静止的 ,不包括在 ILogger 接口。

    在所有这些之后,我不能 记录器实例 进入之内 逃避者 在运行时。我的方法有什么问题?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Jon Skeet    14 年前

    你真的声明了吗 Logger 器具 ILogger ?

    public sealed class Logger : ILogger
    {
        ...
    }
    

    如果是这样的话,应该没问题。请发布一些代码,以便我们尝试诊断问题。

    如果不是,那就是问题所在,而且很容易解决:)

        2
  •  1
  •   MatthiasG    14 年前

    你描述的例子对我来说很好。我举了一个小例子,也许你看到一些不同之处:

    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);
        }
    }