2
我有一個服務通過反射調用其他庫中的方法。但是,其中一些庫具有外部依賴性,例如有時用於執行其工作的app.config文件。使用反射和配置依賴項調用DLL
是否有任何有關如何做到這一點的最佳做法或任何可以幫助解決這種情況的圖書館?例如:如果我的服務應該在方法foo()上調用外部dll,則foo()會使用app.config獲取字符串列表,但在直接使用反射時會崩潰。
我有一個服務通過反射調用其他庫中的方法。但是,其中一些庫具有外部依賴性,例如有時用於執行其工作的app.config文件。使用反射和配置依賴項調用DLL
是否有任何有關如何做到這一點的最佳做法或任何可以幫助解決這種情況的圖書館?例如:如果我的服務應該在方法foo()上調用外部dll,則foo()會使用app.config獲取字符串列表,但在直接使用反射時會崩潰。
你必須創建一個新的AppDomain來調用你的外部應用程序。
定義一個接口來實現您的外部應用使用。
創建一個派生自MarshallByRefObject的類,並將其標記爲可串行化並實現對外部應用程序的調用。
爲您接口並調用它定義沒有adequat設置一個AppDomain(配置文件等)
CreateInstanceAndUnwrap實施。
[在運行時更改默認app.config]的可能的重複(http://stackoverflow.com/questions/6150644/change-default-app-config-at-runtime) – yms
@yms:不完全,因爲服務也會有自己的配置文件,但可能需要從幾個讀入其「配置容器」 –
也許你可以加載在一個單獨的應用程序域的DLL並使用http://msdn.microsoft.com/en-us/ library/system.appdomainsetup.configurationfile.aspx –