类型参数的多个约束

时间:2014-07-07 14:39:58

标签: 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();
        }
    }

这是BaseService类

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

当我构建时,会出现这样的错误......

  

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

中将其用作参数“T”

如何正确完成此操作? 谢谢。

1 个答案:

答案 0 :(得分:5)

您还需要将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>中实际上不需要该约束,请将其删除。