2017-07-06 25 views
0

當您想將它們添加到您自己廣泛使用的庫中時,是否有限制使用第三方庫(如NewtonSoft或AutoMapper)的方法?是否可以限制在自己的解決方案中使用第三方庫?

E.g.比方說,我們有一個類庫,其他幾個項目用於某些任意的事情,這個庫反過來使用另一個第三方庫。 這當然需要所有其他項目 - 只想使用我們自己的項目來引用NewtonSoft或AutoMapper是否需要它。

有沒有辦法圍繞這個以某種方式構建(除了明顯的部分,不使用第三方庫)?

編輯

比方說,我有一個web項目中,那需要引用類文庫B我的業務邏輯,類庫使用AutoMapper,我想一個辦法不具有參考AutoMapper在項目A中。我相信這是不可能的,但如果是這樣我想知道如何。

它會解決問題,如項目A和C使用不同版本的相同庫它會衝突,我知道這可以通過明確指出要使用的版本在webconfig中排序。但如果有更清晰的方式,我想知道如何。

編輯#2

如果我標誌着在類庫B使用AutoMapper爲內部例如面積?在項目A中不需要引用AutoMapper,對吧?

能工作嗎?

+0

把NewtonSoftware和/或AutoMapper代碼在不同的名稱空間中。所以當其他項目使用代碼時,他們不必引用第三方dll的命名空間。 – jdweng

+4

如果您不希望庫的使用者需要Automapper,那麼不要讓您的庫依賴於Automapper。 – Amy

+0

我正在尋找項目A,它引用了使用Json.Net的項目B.項目A **不具有對NewtonSoft.Json的引用,但工作得很好。 – stuartd

回答

2

你可以分割你的圖書館。一部分(A)使用Newtonsoft和AutoMapper,另一部分(B)不使用。

大概將有依賴關係B.

所有其他項目都可以決定是否使用A或B.如果他們requiere基於Newtonsoft和AutoMapper功能他們會選擇A.

+0

這似乎是處理此問題的最佳方法。 – user4319995

+1

對於此設置,命名慣例通常爲部分A的MyCompany.MyProduct.dll而部分B的MyCompany.MyProduct.Core.dll。 –

相關問題