具有泛型返回类型和一个泛型参数的 Dotnet 类方法

问题描述 投票:0回答:1

当返回类型是通用的并且参数之一也是通用的时,我尝试创建一个类方法。 返回类型应该是泛型类 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>
时,我收到错误消息,无法找到要重写的方法。 我没有找到一些类似的例子,但不是确切的例子,所以我无法找到我做错了什么。

c# .net generics inheritance abstract-class
1个回答
0
投票

重写类的方法签名必须与基类的方法签名相同。这意味着您的 Process 方法还必须返回 TResult。您不想返回的具体值必须在调用方法时指定。

© www.soinside.com 2019 - 2024. All rights reserved.