我做了这个多重约束
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”
如何正确完成此操作? 谢谢。
答案 0 :(得分: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();
}
}
如果您在BaseService<T>
中实际上不需要该约束,请将其删除。