2010-11-11 56 views
2

我需要在方法中檢測其調用者是否具有對組件的內部訪問權限。也就是說,如果它是a)在同一個程序集中的代碼或b)與我的程序集有一個InternalsVisibleTo關係。理想情況下,支票應該很快。檢測調用者是否可以訪問我的組件內部件

我有什麼選擇?

更新: 如果對於問題的第一部分有一個很好的解決方案,我也會部分滿意。

+5

你在什麼樣的地獄? – 2010-11-11 23:15:18

+0

該方法是公開的嗎? – x0n 2010-11-11 23:20:18

+3

我提供了一個答案 - 但出於興趣,你可以解釋爲什麼你想這樣做?一般來說,也許有更好的解決方案。 – 2010-11-11 23:25:09

回答

0

查找到System.Diagnostics.StackTrace

System.Diagnostics.StackTrace st = new StackTrace(); 
    MethodBase mb = st.GetFrame(1).GetMethod(); 
    Assembly a = mb.DeclaringType.Assembly; 

一)只是當前裝配比作

B)我認爲你應該能夠挑選出InternalsVisibleTo上裝配屬性

+0

我想這樣做「理想的檢查應該是快速的」約束,但我認爲這可能是唯一可靠的方法。 – x0n 2010-11-11 23:20:57

+0

比他們浪費的時間快得多,如果他們使用這個來實現調用者依賴的行爲,那麼結果會很糟糕... – 2010-11-11 23:23:44

+0

我同意。 CAS在這裏更合適。 – x0n 2010-11-12 00:12:54

相關問題