C# 8 从具体类型中调用默认实现

C# 8 Call default implementation from within concrete type

给定以下 interface 和默认实现:

public interface IState
{
    string Name => "Unknown";
}

具体实现如下:

public class Demo: IState
{
    public void PrintName()
   { 
       Console.WriteLine(this.Name); // <-- this is invalid syntax
   }
}

是否可以从具体类型中调用默认实现?

我已经查看了 default implementations for C# 8.0 的文档,如果有答案我也找不到。

您可以通过将 this 转换为接口来使用它,并在转换结果上调用 属性。就好像 class 使用显式接口实现实现了 属性。这是一个打印 "Unknown":

的完整示例
using System;

public interface IState
{
    string Name => "Unknown";
}

public class Demo : IState
{
    public void PrintName()
    {
        Console.WriteLine(((IState) this).Name);
    }
}

class Program
{
    static void Main()
    {
        new Demo().PrintName();
    }
}