2011-08-03 20 views
2

C#4.0のcustomvalidation属性を使用してカスタム検証メソッドを作成しました。私はEntity Framework 4.1のコードを使用しています。ただし、カスタム検証属性メソッドは静的です。同じクラス内の他の非静的フィールドを参照しながら、クラス内の他のロジックを検証するにはどうすればよいですか。データの注釈とコードを使用したカスタム検証属性

すなわち

public class Foo 
{ 
    [CustomerValidation(typeOf(Foo), "ValidatePoints"] 
    public string Points { get; set; } 

    public string AdvancedPoints { get; set;} 

    public static ValidationResult ValidatePoints(string _Name) 
    { 
     if (_Name != AdvancedPoints) //Note that AdvancedPoints here is non-static and           should not be here. but i want to know how i can achieve this. 
     {  
      return ValidationResult.Success; 
     } 
     else 
      return new ValidationResult("Wrong entry"); 
} 

}

答えて

0

あなたは、おそらくそれはあなたが与えられたクラスのクラスまたはマルチプロパティ検証を追加することができますIValidatableObject

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.ivalidatableobject.aspx

を見てみたいです。

あなたは、このようなクラスを検証するため、そのメソッドを使用しit.andに静的メソッドを持つクラスを使用することができます
0

[CustomValidation(typeof(Validate_Foo), "Validate")] 
public class Foo 

public class Validate_Foo 
{ 
    public static ValidationResult Validate(Foo obj, ValidationContext vc) 
    { 
     return ValidationResult.Success; 
     //or return new ValidationResult("Error"); 
    } 
} 
関連する問題