无法访问接口c#中的方法

时间:2015-10-02 13:13:02

标签: c#

所以我创建了一个看起来像这样的接口ILogger.cs

public class ILogger {
   void Information(string message);
}

然后我创建了一个类Logger.cs来实现该方法:

public class Logger : ILogger
{
   public void Information(string message)
   {
      Trace.TraceInformation(message);
   }
}

我在另一个类中调用Information(),如下所示:

public class Another() 
{
   private ILogger _logger = new Logger();

   _logger.Information("message");
}

我收到错误消息,说由于保护级别我无法访问Information()。我理解为什么我有这个消息,如果我只是在界面中添加public。但我不明白的是,因为我已经将Information()设置为Logger.cs类中的公开,所以我不应该做那种修复吗?

3 个答案:

答案 0 :(得分:4)

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

我猜您只需要在界面实现中将 class 更改为 interface

答案 1 :(得分:4)

您将ILogger声明为类,而不是接口。这就是为什么你不能使用信息方法的原因。 c#中的默认访问修饰符是" private"。

答案 2 :(得分:1)

public class Another() 
{
   private ILogger _logger = new Logger();

   _logger.Information("message");
}

_logger就像接口一样,它使得Information()函数获得接口的可见性,这是​​内部的。

要解决此问题,您应该将该函数设为公共函数。