2009-07-15 48 views
0

是否可以使用某種屬性來引發異常。這就是我的意思。而不是這樣做:使用屬性在.NET中引發異常

public int Age 
{ 
    get 
    { 
     return this.age; 
    } 

    set 
    { 
     this.age = value; 
     NotifyPropertyChanged("Age"); 

     if (value < 18) 
     { 
      throw new Exception("age < 18"); 
     } 

    } 
} 

做這樣的事情:

[Range(18,100, ErrorMessage="Must be older than 18")] 
public int Age 
{ 
    get 
    { 
     return this.age; 
    } 

    set 
    { 
     this.age = value; 
     NotifyPropertyChanged("Age"); 
    } 
} 

任何幫助將不勝感激!

最好的問候, 基里爾·

回答

5

你正在尋找一個AOP(面向方面​​編程)庫,它可以做到這一點很容易。我會建議嘗試給PostSharp。主頁上的示例應該說明如何在屬性/方法上使用它。

1

不,這是不可能的。你必須在setter中自己完成驗證 - 就像NotifyPropertyChanged一樣。

順便說一句 - 這就是所謂的「Aspect Oriented Programming」。

1

正如接受的解決方案所說,不可能直接做到這一點,但可以通過使用像PostSharp這樣的工具來實現。 只是爲了增加已經被告知的內容,我不會推薦從屬性中拋出,或者在分配時進行這種驗證,因爲通常它不具有太多的價值,並且可能導致一些麻煩。 雖然它可能取決於場景。