当返回类型是通用的并且参数之一也是通用的时,我尝试创建一个类方法。 返回类型应该是泛型类 Result,如下所示:
public class Result<T>
{
public bool Success { get; set; }
public string Message { get; set; }
public T? Value { get; set; }
}
有问题的方法位于抽象基类中:
public abstract class BaseParser
{
protected abstract TReturn Process<T, TReturn>(HttpClient httpClient, T data) where T : class where TReturn : class;
}
这是由 IndexParser 或其他不同页面部分的解析器继承的。我以为我可以简单地传递 Result,但是当我这样做时:
public class IndexParser : BaseParser
{
protected override Result<HtmlDocument> Process<T, TReturn>(HttpClient httpClient, T data) where T : class where TReturn : class
}
我收到错误,返回类型必须是
TReturn
。但是,当我将 TReturn
更改为 Result<HtmlDocument>
时,我收到错误消息,无法找到要重写的方法。
我没有找到一些类似的例子,但不是确切的例子,所以我无法找到我做错了什么。
重写类的方法签名必须与基类的方法签名相同。这意味着您的 Process 方法还必须返回 TResult。您不想返回的具体值必须在调用方法时指定。