2010-02-17 101 views
2

是否有可能使用反射來獲取調用方法的類的實例?可能通過反射來獲取調用方法類的實例,或調用堆棧中的任何方法?

試圖「破解」web服務的傳入解決方案,以傳遞傳入呼叫的​​Timeout值(當您調用一個webservice,然後調用一個使用WSE的新webservice時,它會在客戶端設置超時5分鐘而下一個級別只有100秒的默認值,或者相​​反。)。

我已經有了一個自定義策略,一旦代理實例調用.SetProxy(...)就會被調用。這是我想要訪問的實例,但是我可以開始編碼的策略代碼在下面是3個「級別」。

所以我想知道如果我做了一個stacktrace getmethod 2級,我能以任何方式獲得該實例嗎?到目前爲止,我只能獲得該類的類型而不是實例。

+0

笨蛋。你應該先搜索。 – 2010-02-23 00:20:19

+3

如果你能指出我正確的答案,我會很高興,因爲我在搜索中找不到任何答案。 – Wolf5 2010-02-23 09:40:23

回答

0

我不熟悉WSE,但很瞭解反思。要獲取實例,您需要具有參考或引用參考的內容。如果您可以找到任何具有調用對象作爲參考的類,請使用Reflection.GetField,Reflection.GetProperty和/或Reflection.GetMethod來獲取該值。即使這意味着要經過5層與受保護的領域,只要你可以在那裏你可以找到它。但是,如果它是一個乾淨的休息,就像一個不同的線程或EXE的產卵,並且沒有識別信息通過,那麼你運氣不好。您必須使用外部來源來存儲所需的超時時間,然後讓調用的每一側都參考它。使用Red Gate .Net Reflector查看引用的類。

+0

我沒有看到一個實例。你做? – 2010-02-23 00:20:34

+0

MethodBase仍然只是調用方法的信息,不是嗎?我正在尋找一種方法來抓取堆棧跟蹤中的方法實例。不是新的,而是調用的實際實例。我不確定這是否真的有可能,並且是我在這裏問的原因。 – Wolf5 2010-02-23 09:42:52