Chr*_*lin 3 c# c#-8.0 default-interface-member
这是我的AC#项目中的代码,该代码针对Visual Studio 2019(16.3.9)的.NET Core 3.0(因此我应该在C#8.0中)
public interface IJsonAble
{
public string ToJson() => System.Text.Json.JsonSerializer.Serialize(this);
}
public class SumRequest : IJsonAble
{
public int X { get; set; }
public int Y { get; set; }
public void Tmp()
{
new SumRequest().ToJson(); //compile error
}
}
Run Code Online (Sandbox Code Playgroud)
编译错误是:
CS1061'SumRequest'不包含'ToJson'的定义,并且找不到可以接受的扩展方法'ToJson'接受类型为'SumRequest'的第一个参数(您是否缺少using指令或程序集引用?)
有人可以阐明这种行为吗?
方法仅在接口上可用,而在类上不可用。因此,您可以这样做:
IJsonAble request = new SumRequest()
var result = request.ToJson();
Run Code Online (Sandbox Code Playgroud)
要么:
((IJsonAble)new SumRequest()).ToJson();
Run Code Online (Sandbox Code Playgroud)
这样做的原因是它允许您添加到界面中,而不必担心下游后果。例如,该ToJson方法可能已经存在于SumRequest类中,您希望将其调用吗?
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |