我有以下通用类:
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
似乎有效,因为RequestThatDoesWork
为IRequest
提供了一种类型:
public class RequestThatDoesWorkValidator : DomainValidator<RequestThatDoesWork>
{
}
public class RequestThatDoesWork : IRequest<List<string>>
{
}
我希望这更有意义。
答案 0 :(得分:1)
您需要将类型参数添加到您自己的类型中,以作为嵌套参数传递:
public class DomainValidator<TRequest, TInner> : IValidator<TRequest>
where TRequest : IRequest, IRequest<TInner>