C# - 具有多种类型的泛型类型,包括类型为

时间:2018-06-18 16:28:36

标签: c# .net generics

我有以下通用类:

public class DomainValidator<TRequest> : IValidator<TRequest> where TRequest : IRequest, IRequest<object>
{
}

正如您所看到的,我为TRequest类型指定了2种类型:IRequest没有类型,IRequest<object>类型为任何类型。

如果我在任何地方使用这个DomainValidator类,Visual Studio编译器总是抱怨该类型不能转换为类型IRequest,因为它有自己的类型参数。

我看过其他类似的问题,但没有一个有类型参数,它有自己的类型。是否有可能做我想要实现的目标?

更新

以下是我使用此泛型类的方法以及失败的地方。

以下课程RequestThatDoesntWorkValidator不起作用,因为RequestThatDoesntWork未提供IRequest的类型,因为它不需要:

public class RequestThatDoesntWorkValidator : DomainValidator<RequestThatDoesntWork>
{

}

public class RequestThatDoesntWork : IRequest
{

}

但以下课程RequestThatDoesWorkValidator似乎有效,因为RequestThatDoesWorkIRequest提供了一种类型:

public class RequestThatDoesWorkValidator : DomainValidator<RequestThatDoesWork>
{

}

public class RequestThatDoesWork : IRequest<List<string>>
{

}

我希望这更有意义。

1 个答案:

答案 0 :(得分:1)

您需要将类型参数添加到您自己的类型中,以作为嵌套参数传递:

public class DomainValidator<TRequest, TInner> : IValidator<TRequest> 
       where TRequest : IRequest, IRequest<TInner>