2015-06-11 2 views
0

Учитывая следующие семь элементов данных, я должен создать правило проверки, что общая длина элементов не превышает 315 символов. AssetType является перечислителем типов, и если один из этих типов не точно описывает актив, используется AssetTypeOtherDescription. Любые идеи о том, как я могу реализовать эту проверку?FluentValidation для проверки длины разрозненной коллекции

COLLATERAL.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.AddressLineText 
COLLATERAL.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.CityName 
COLLATERAL.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.PostalCode 
COLLATERAL.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.StateCode 
COLLATERAL.PLEDGED_ASSET.ASSET_DETAIL.AssetType 
COLLATERAL.PLEDGED_ASSET.ASSET_DETAIL.AssetTypeOtherDescription 
COLLATERAL.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.LEGAL_DESCRIPTIONS.LEGAL_DESCRIPTION 

ответ

1

Как об этом:

RuleFor(x => x).Must(YourRequest) 

private bool YourRequest(COLLATERAL coll) 
{ 
    var result = false; 

    //your Logic 

    return result; 
} 

вы можете Finde полный пример here


private bool YourRequest(COLLATERAL coll) 
{ 
    var result = false; 

    if(coll != null 
    && coll.PLEDGED_ASSET_PROPERTY != null 
    && coll.PLEDGED_ASSET_PROPERTY.PROPERTY != null 
    && coll.PLEDGED_ASSET_PROPERTY.PROPERTY.ADDRESS != null 
    && coll.PLEDGED_ASSET.OWNED_PROPERTY != null 
    && coll.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY != null 
    && coll.PLEDGED_ASSET.ASSET_DETAIL != null) 
    { 
     var charcount = 0; 
     charcount += coll.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.AddressLineText.Count() 
     charcount += coll.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.CityName.Count() 
     charcount += coll.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.PostalCode.Count() 
     charcount += coll.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.ADDRESS.StateCode.Count() 

     charcount += coll.PLEDGED_ASSET.OWNED_PROPERTY.PROPERTY.LEGAL_DESCRIPTIONS.LEGAL_DESCRIPTION 


     //one way to check your enumerator 
     bool isNotAccurately =false; 
     foreach(var item in coll.PLEDGED_ASSET.ASSET_DETAIL.AssetType) 
     {  
      if(item == //your Logic for "does not accurately describe" 
       isNotAccurately = true; 
     } 
     if(isNotAccurately) 
      charcount += coll.PLEDGED_ASSET.ASSET_DETAIL.AssetTypeOtherDescription 
     else 
      foreach(var item in coll.PLEDGED_ASSET.ASSET_DETAIL.AssetType) 
      {  
       charcount += item.Count(); 
      } 

     if(charcount < 315) 
      result = true; 
    } 

    return result; 
} 
+0

То есть кое-что полезно, но я все еще пытаюсь придумать решение , – PEdwards

+0

@PEdwards Я надеюсь, что мое обновление действительно поможет вам – WiiMaxx

+0

Спасибо, это очень полезно. – PEdwards

Смежные вопросы