2016-11-10 52 views
1

我有項目A項目BProjectA可以獨立工作,不依賴於ProjectB。現在,只有在ProjectA中添加ProjectB作爲參考時,我纔想要啓用ProjectA中的某些模塊/功能。如何實現這一目標?基於C#項目中包含的引用啓用條件編譯指令

我已經嘗試在ProjectA中添加條件編譯所需的模塊/功能,如下所示。

#if ProjB 
{ 
.. 
} 
#endif 

但我怎麼可以通過檢查「項目B」是參照「項目A」的條件讓這些條件編譯常數。 另外,我不需要在「ProjectA」中始終引用「ProjectB」。仍然「ProjectA」需要在某些情況下獨立工作。

回答

1

你可以使用類似插件模式。例如:

  1. 項目A負載和計算出它是否有或沒有可能加載項目B
  2. 如果項目B可用項目A查找一個定義良好的入口點(例如,你可以有一個類實現IPluginLoad方法
  3. 如果找到入口點,ProjectA調用它並存儲引用(某種變量或將其添加到列表中,如果您有多個選項)
  4. 現在,在您希望進行條件編譯的所有地方,只需檢查if這個插件存在並拋出一個你需要添加ProjectB的異常爲了使用這個功能。

您可以定義兩個項目都知道的特殊接口(多接口)。然後你的插件(ProjectB)將提供你想要調用的所有方法。