2016-04-17 1 views
3

属性。私はそれを行うにしようとしました 方法はValidationAttributeから継承LicenseValidationAttributeによって使用されます。 主な目標は、顧客が資格を与えられているプロジェクトの制限にすでに達している場合、例外投げにつながるCreateProject()メソッドが呼び出されたときです。そうでなければ、それはOKの流れになります。 私は小さなプログラムを書いたことがありますが、残念ながらそれは動作しません。例外をスローしないことを意味します。 プログラム:カスタム検証を作成しますが、私は私の溶液中でのライセンスを強制するために検証属性を作成しようとしているC#のサーバ側

[AttributeUsage(AttributeTargets.Method)] 
public class MyValidationAttribute : ValidationAttribute 
{ 
    public MyValidationAttribute() 
    { 

    } 
    public override bool IsValid(object value) 
    { 
     int id = (int)value; 
     if (id > 0) 
      return true; 
     throw new Exception("Error"); 
    } 
} 

public class Service 
{ 
    [MyValidation] 
    public bool GetService(int id) 
    { 
     if (id > 100) 
     { 
      return true; 
     } 
     return false; 
    } 
} 


    static void Main(string[] args) 
    { 
     try 
     { 
      Service service = new Service(); 
      service.GetService(-8); 

     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); ; 
     } 

    } 

ありがとうございました!するSystem.ReflectionのGetCustomAttributesメソッドを追加した後

答えて

0

それが動作を呼び出す:

static void Main(string[] args) 
    { 
     try 
     { 
      Service service = new Service(); 
      service.GetService(-8); 
      service.GetType().GetCustomAttributes(false); 

     } 
     catch (Exception ex) 
     { 

      Console.WriteLine(ex.Message); ; 
     } 

    }