这是我的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 } }
编译错误是:
CS1061'SumRequest'不包含'ToJson'的定义,并且找不到可以接受的扩展方法'ToJson'接受类型为'SumRequest'的第一个参数(您是否缺少using指令或程序集引用?)
有人可以阐明这种行为吗?
方法仅在接口上可用,而在类上不可用。因此,您可以这样做:
IJsonAble request = new SumRequest() var result = request.ToJson();
要么:
((IJsonAble)new SumRequest()).ToJson();
这样做的原因是它允许您添加到界面中,而不必担心下游后果。例如,该ToJson
方法可能已经存在于SumRequest
类中,您希望将其调用吗?