对类型参数的多重约束
本文关键字:约束 类型参数 | 更新日期: 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
中,因为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>
中的约束,只需删除它