如果我有2個不同的dll,並且在每個dll中我實例化與靜態相同的對象(例如,私有靜態MyObject objRandom = new MyObject();),2它的實例將被創建。將靜態對象從一個dll傳遞到另一個dll
如果我要通過依賴注入將靜態對象從DllA傳遞到DllB,我將只有一個它在堆棧中創建的實例嗎?
如果我有2個不同的dll,並且在每個dll中我實例化與靜態相同的對象(例如,私有靜態MyObject objRandom = new MyObject();),2它的實例將被創建。將靜態對象從一個dll傳遞到另一個dll
如果我要通過依賴注入將靜態對象從DllA傳遞到DllB,我將只有一個它在堆棧中創建的實例嗎?
該對象不是靜態的,參考是。您可以根據需要爲同一個實例提供儘可能多的引用。在你的例子中靜態的東西是你的類中的引用,因此包含static MyObject objRandom...
的同一類的不同實例將具有相同的實例。
如果同一個對象被其他類引用,則以靜態或非靜態方式引用。即使該類在另一個DLL中。
希望它澄清它是如何工作的。
它取決於你的代碼,但最有可能是1實例。靜態每個AppDomain實例化,而不是每個DLL。你的DLL全部加載到同一個應用程序域中。
這取決於你的代碼。 – SLaks
如果兩個DLL都加載在同一個應用程序中,則可以在兩個應用程序的類之間傳遞實例,而不會出現問題。事實上,這是非常常見的事情(想想所有的.NET Framework dll) – ivowiblo