类型参数的多个约束

Rya*_*yan 2 c# generics type-constraints

我做了这个多重约束

public class BaseValidation<S, R> 
        where R : BaseRepository 
        where S : BaseService<R>, new()
    {
        public S service;

        public BaseValidation()
        {
            service = new S();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是BaseService类

public class BaseService<T> where T : BaseRepository, new(){ }
Run Code Online (Sandbox Code Playgroud)

当我构建时,会发生这样的错误......

'R'必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型中将其用作参数'T'

如何正确完成这个?谢谢.

Tho*_*que 5

您还需要添加new()约束R,因为T在定义中具有该约束BaseService<T>:

public class BaseValidation<S, R> 
        where R : BaseRepository, new()
        where S : BaseService<R>, new()
{
    public S service;

    public BaseValidation()
    {
        service = new S();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您实际上不需要该约束BaseService<T>,只需将其删除即可.