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();
}
}
给定以下 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();
}
}