【发布时间】:2020-02-03 16:52:58
【问题描述】:
给定以下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 的文档,如果有答案,我无法找到它。
【问题讨论】:
-
顺便说一句,要了解为什么这不能像书面那样工作(或者至少为什么这是一个坏主意),请考虑
Demo使用Name实现多个接口,以及它自己的Name会员。this.Name只能明确引用存在于Demo本身上的Name成员(可能通过基类)。扩展base语法is being considered, though。 -
这与显式接口定义相同,因为从前,您需要将
this转换为接口类型,这是没有办法的。