所以我创建了一个看起来像这样的接口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
类中的公开,所以我不应该做那种修复吗?
答案 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()函数获得接口的可见性,这是内部的。
要解决此问题,您应该将该函数设为公共函数。