我想如果我加載.net程序集(這是一個exe)到我自己的appdomain中並通過refleciton獲取對象引用,我可以獲得對EXE中包含的對象的引用。我可以獲得對組件中包含的對象的引用嗎?
我真的可以這樣做嗎?
這裏是我的示例代碼...
myDomain = AppDomain.CreateDomain("MyAppDomain");
myDomain.ExecuteAssembly(exePath);
Assembly myAssembly = myDomain.GetAssemblies().Single(a => a.FullName.Contains("TestAssembly"));
Type t = commandsAssembly.GetType("TestClass");
以任何方式,我可以得到這個類型的對象的引用?
編輯: 在我的EXE的主要方法中,我創建了一個TestClass類型的對象,我想引用該對象。我認爲是ExecuteAssembly將在新的appdomain中執行exe,所以當EXE實例化時,我的對象將被創建。如果我錯了,請糾正我。的CreateInstance將創建一個新的對象,但我想引用當執行EXE其被創建我的對象......可能是我的一個愚蠢的方式思考,請大家指正...提前
感謝
ExecuteAssembly不會返回到Main方法的末尾...您的TestClass引用是否仍然存在或已經處理?請更清楚地解釋你爲什麼要做你描述的內容。 – Yahia
Yahia @這只是示例代碼,我將在另一個線程中調用ExecuteAssembly,並使用myDomain來獲取對該域中運行的實際對象的引用。我想如果我可以創建一個迷你框架來做UI測試自動化。爲了直截了當,我想抓住一個appdomain中所有類型的實例。 – coolcake
看到我的編輯...如果你真的需要這樣做有選擇,你會「只是」需要做一個好的(內存)探查器必須做的 - 至少作爲一個起點...... – Yahia