C#界面底层对象的流畅验证
我得到了一个azure函数,我收到了Json包含的JsonC#界面底层对象的流畅验证,c#,azure-functions,fluent,C#,Azure Functions,Fluent,我得到了一个azure函数,我收到了Json包含的Json List<Iinterface> objects {get;set;} json转换器实际上解析类型,因此,如果我调用.GetType,那么在列表项上,我将获得正确的参考底图类型 但是我需要根据基线类型进行验证 我有这个,但我能做得更好吗 public class IinterfaceValidator : AbstractValidator<Iinterface> { public I
List<Iinterface> objects {get;set;}
json转换器实际上解析类型,因此,如果我调用.GetType,那么在列表项上,我将获得正确的参考底图类型
但是我需要根据基线类型进行验证
我有这个,但我能做得更好吗
public class IinterfaceValidator : AbstractValidator<Iinterface>
{
public IinterfaceValidator (AValidator aValidator)
{
When(x => x.GetType() == typeof(A), () =>
{
RuleFor(x => (A)x)
.SetValidator(aValidator);
});
}
}
公共类IIinterfaceValidator:AbstractValidator
{
公共界面验证器(AValidator AValidator)
{
当(x=>x.GetType()==typeof(A),()=>
{
(x=>(A)x)的规则
.SetValidator(aValidator);
});
}
}
更简洁的实现是使用SetInheritanceValidator
。假设您分别为以下类提供了验证程序AValidator
和BValidator
公共类A:Iinterface{…}
公共类B:接口{…}
然后为Iinterface
定义一个验证器,如下所示。注意,我使用子验证器的延迟初始化来避免在初始化期间创建实例
公共类IIinterfaceValidator:AbstractValidator
{
公共IinterfaceValidator(){
RuleFor(x=>x).SetInheritanceValidator(v=>{
v、 添加。看起来不错,有什么问题吗?
public class IinterfaceValidator : AbstractValidator<Iinterface>
{
public IinterfaceValidator (AValidator aValidator)
{
When(x => x.GetType() == typeof(A), () =>
{
RuleFor(x => (A)x)
.SetValidator(aValidator);
});
}
}