对类型参数的多重约束

本文关键字:约束 类型参数 | 更新日期: 2023-09-27 18:11:42

我做了这个多重约束

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

这是BaseService类

public class BaseService<T> where T : BaseRepository, new(){ }

当我构建时,出现如下错误…

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

中的形参'T'

如何正确地做到这一点?谢谢你。

对类型参数的多重约束

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

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

如果你不需要BaseService<T>中的约束,只需删除它