2011-08-06 30 views
0

NetFx是NuGet提供的一大套幫手。但我沒有得到一件事:爲什麼所有的助手類都是內部的?如果我需要幾個項目的幫手,我該如何對待它?爲什麼NetFx助手是內部的?

更新。我現在做的是將NetFx類放在一個項目中,公開那些我需要的類,並從我的其他項目中引用這個程序集。但是這種方法使得更新NetFx變得困難:我將不得不一次又一次地公開課程。

+1

這是*期望*你改變了代碼。他們是片段。你得到的是源代碼,而不是程序集。 –

+0

預計我可以調試代碼並在出現問題時對其進行修補。但是,預計我會更改代碼以使用微不足道的代碼嗎? – SiberianGuy

+0

它並不難以更新。 NuGet將永遠不會覆蓋您修改的Visibility.cs :) – kzu

回答

1

簡短回答:因爲他們明確designed to be that way。即幫助者應該是那些需要它們的部分的內部,而不是傾倒在「Common.dll或Helpers.dll」中。對於這個決定可能有更多背景的長答案只能由(原始)作者提供。

關於您的原始問題:您可能會在幾個項目中包含該幫助程序。

如果您確實希望他們生活在單獨的程序集中,並且不想更改代碼(將內部更改爲公開),則可以使用該程序集上的InternalsVisibleTo屬性,列出需要的所有其他項目/程序集使用它們。並不是說這是一個很好的解決方案 - 它明確針對NetFx的初始設計 - 但至少它會在更新時免除人工勞動。總而言之,我不會爲任何一個(「常見的」DLL或嚴格的本地函數)做出綠色域決定。兩者都有明顯的優點和缺點。但是你並沒有問過這個部分的故事,也就是說,你已經做出了決定;-)

+0

有時我不能將相同的助手添加到不同的項目。如果project1返回一些netfx類呢?在這種情況下,我必須爲project1和project2(它使用project1)使用netfx的相同項目 – SiberianGuy

+0

它們不能返回內部的東西。所以,如果你需要公開某些東西,你只需要定義一個相同的部分類,並將其標記爲公共。 – kzu