2013-04-15 142 views
0

我正在尋找將DLL加載到另一個項目(Assembly.Load *()等,在運行時)。對於我來說,如果有一種方法可以將主程序集中的類型(即類)包含到DLL中,那麼我可以在方法調用中傳遞它們(以及對象)。訪問另一個項目中的類型從一個DLL(C#)

在C++中,我可以包含聲明,但是(據我所知)在C#中沒有辦法做到這一點。我可能最終不得不將整個主程序「引用」到DLL中,但似乎有更好的方法。

(基本上DLL的是運行時模塊,這就需要信息從主程序做處理上。但是主要的組件還需要獲得相當多的東西模塊需要訪問。)

+0

你能否提供代碼以獲得更多的理解? –

+0

在這種情況下,您似乎希望製作另一個項目,其中包含您將分享的所有課程。然後,您可以參考主項目中的dll以及任何可能需要它的其他人。 「 – Justin

回答

1

外貌就像你有一個應用程序設計問題,導致循環引用 - 你的dll需要來自應用程序和應用程序的類需要來自dll的類。

您應該嘗試重構您的項目以避免這種情況。具體來說,您的DLL中的代碼不應該直接訪問主應用程序。

您可以在共享DLL定義一個接口

interface IFoo{ 
    int GetBar(); 
} 

然後用它在你的DLL的代碼作爲參數

void DoSomeStuff(IFoo foo); 

而在你的應用程序中創建一個實際的實現:

class Foo:IFoo{...} 

這樣,你可以在DLL中的主應用程序中執行某些操作,而無需引用D中的應用程序二。

+0

」具體來說,您的DLL中的代碼不應該直接訪問主應用程序。「 沒錯。我並不是試圖訪問主應用程序本身,而是需要能夠將主應用程序中的數據傳遞到DLL中的函數中。界面的想法是偉大的 - 謝謝你! – DimeCadmium

相關問題