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'
如何正确完成这个?谢谢.
您还需要添加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>,只需将其删除即可.