有沒有一種方法可以跟蹤和攔截對自動實現的屬性中的值的調用?跟蹤調用自動實現的屬性
我想有一些代碼看起來有點像這樣:
[Tracked]
public int SomeProperty { get; set; }
理想的屬性是能夠攔截更改屬性值。這可能嗎?
我不希望它有第二段代碼稍後旋轉一個對象並請求值,而是該屬性應該在設置值時加上值。
有沒有一種方法可以跟蹤和攔截對自動實現的屬性中的值的調用?跟蹤調用自動實現的屬性
我想有一些代碼看起來有點像這樣:
[Tracked]
public int SomeProperty { get; set; }
理想的屬性是能夠攔截更改屬性值。這可能嗎?
我不希望它有第二段代碼稍後旋轉一個對象並請求值,而是該屬性應該在設置值時加上值。
不可以。您這樣做的方式是不使用自動屬性。唯一可行的解決方案是使用類似於Castle AOP的東西來創建類的自動包裝並跟蹤更改,但這是很多難以實現的工作。
如果你想要一個在運行時工作的解決方案,那麼你需要一個面向方面編程(AOP)框架;我用CciSharp取得了一些成功。它不如PostSharp成熟,但它的工作原理基本相同:它將修改已編譯的代碼,生成另一個程序集。
如果你只是想要測試(或分析),那麼還有另一種選擇:Microsoft Moles(這也是免費的)。它的工作原理非常不同它在運行時使用「繞道」類型的注入來更改程序,攔截屬性getter和setter方法。