Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#界面底层对象的流畅验证_C#_Azure Functions_Fluent - Fatal编程技术网

C#界面底层对象的流畅验证

C#界面底层对象的流畅验证,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

我得到了一个azure函数,我收到了Json包含的Json

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);
            });
        }
    }