相关疑难解决方法(0)

从实现类调用C#接口默认方法

C#8支持接口中的默认方法实现。我的想法是将一个日志记录方法注入这样的类中:

public interface ILoggable {
    void Log(string message) => DoSomethingWith(message);
}

public class MyClass : ILoggable {
    void MyMethod() {
        Log("Using injected logging"); // COMPILER ERROR
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个编译器错误:“名称在当前上下文中不存在”

以这种方式使用默认方法实现是不可能的吗?

编辑:

有关C#规则的正确答案,请参见接受的答案。有关更简洁的解决方案(我的问题的初衷!),请参阅下面的答案

c# c#-8.0 default-interface-member

6
推荐指数
4
解决办法
400
查看次数

标签 统计

c# ×1

c#-8.0 ×1

default-interface-member ×1