2015-02-09 106 views
0

我現在被卡在檢索訪問修飾符EventInfo對象(在C#.NET中反映的事件字段)的方法。EventInfo訪問修飾符

通過訪問修飾符我的意思是:公共/私營/保護/內部和靜態,只讀等

回答

3

在理論(在IL級)基本上有三個成員組成的事件:

  • 添加
  • 刪除
  • 提高

您可以通過一個單獨訪問每個那些EventInfo property(AddMethodRemoveMethodRaiseMethod)並檢查它們中的每一個的訪問修飾符。對於在C#中聲明的事件,我希望沒有提升方法,並且添加/刪除方法具有相同的可訪問性。

+0

這很聰明。 EventInfo的每種方法都應該有相同的修飾符,是嗎? – marty 2015-02-09 13:03:35

+1

@marty:不一定。例如,我可以想象公共添加/刪除,但私人提升。並不是說C#編譯器完全使用了raise。公開添加但私下刪除會很奇怪 - 但我沒有檢查IL中是否會失效。 (至少在C#中沒有辦法代表它。) – 2015-02-09 13:49:50

+0

你說得對,C#不允許用任何修飾符聲明添加/刪除方法訪問器。它不支持爲raise方法聲明自定義訪問器。那麼,raise方法是默認聲明的嗎? – marty 2015-02-09 19:27:47