2010-07-07 30 views
2

我目前正在爲一個項目開發數據收集器。它的工作方式是基本上調用另一個收集數據的程序,該程序返回一個包含隊列信息集合的數據結構。收割機然後序列化數據。實際收集數據的程序由另一個團隊維護,最近他們進行了升級並決定重新構建其代碼。我調用的方法仍然位於同一位置,但是,我得到的數據結構已移至不同的程序集(它的代碼保持不變)。有趣的是,我們現在在這個領域都有這個產品的版本,所以根據客戶端的版本,我需要的數據結構可能是兩個不同的程序集中的一個。如果可能的話,我的老闆想嘗試只有一個版本的收割機程序。引用可能存在於兩個程序集之一中的類

所以,我的問題是這樣的:使用C#和.NET 3.5,有沒有辦法選擇在運行時使用哪個程序集?我想我可以使用反射,但我想知道是否有任何方法可以在編譯時正常編寫代碼,然後在運行時解析依賴項,具體取決於其他程序的版本。

回答

0

你可以嘗試使用的適配器(包裝)的設計模式。

interface IQueueInfoProvider 
{ 
    DataStructure FetchData(); 
} 

class Version1QueueInfoProvider : IQueInfoProvider 
{ 
    DataStructure FetchData() 
    { 
     //Fetch using Version1 Assemblies. 
    } 
} 

class Version2QueueInfoProvider : IQueInfoProvider 
{ 
    DataStructure FetchData() 
    { 
     //Fetch using Version2 Assemblies. 
    } 
} 

我相信.NET不會嘗試,如果他們不需要加載引用的組件,但如果我錯了,你總是可以使用反射。

相關問題