2010-05-11 101 views
0

我需要在隔離運行插件時使用默認的應用程序域(AD)來創建新的應用程序域(AD1)。 當創建新的域名我也連線了AppDomainUnload事件允許我這樣稱呼清理代碼等如何從AppDomain獲取當前實例?

我似乎有問題是:

1)從公元創建AD1

2 )在AD1

運行代碼

3)呼叫AD.Unload(AD1)

的代碼切換爲AD1,並調用卸載事件傳遞到當前的AppDomain(AD1)的引用。

在這一點上,我想獲取AD1中運行的當前實例的引用來調用關閉方法,但AppDomain類中沒有GetInstance。

任何想法我怎麼能得到它?

回答

0

在AD1中創建實例時,可以將實例存儲在AppDoman的靜態變量中,靜態屬性的作用域爲AppDomain。或者,如果這不是單例類型的對象,則可以維護AppDomain中對象的列表<>。

你可以把這個「註冊」放在你的插件實例的構造函數中。處理Unload時,您可以使用靜態列表或枚舉列表並對對象執行所需的清理。

1

您是在尋找AppDomain.CurrentDomain

+0

此主題是Kirill關於我們是否曾經在SO上遇到過的問題的完美回答。他坐在我旁邊。 – JaredPar 2010-05-11 16:46:55

+0

我敢肯定,它發生的方式與往常一樣:) – 2010-05-11 16:49:49

+0

哈哈,賈裏德在他的回答中鍵入,打擊刷新和爆炸! :) – 2010-05-11 16:53:12