2012-06-12 18 views
4

我有兩個包含擴展方法的項目。一個項目使用C#實現,另一個使用VB.NET實現,因爲在VB.NET中我可以做一些事情,我不能在C#中,我想在我的擴展方法中利用這些功能。如何在具有相同目的的相同解決方案中爲C#和VB.NET項目提供有意義的名稱?

我如何命名項目來表達它們的意思,同時區分它們是用不同的語言實現的?

對於C#精英:

之一在於VB.NET支持C#不特點:

Doesn't C# Extension Methods allow passing parameters by reference?

供參考:這並不適用於引用類型的工作,這是我感興趣的是什麼。

public static void LoadFromXml<T>(this T targetObject, string xml) 
{ 

    targetObject = _Serializer.DeserializeFromXML<T>(xml); 

} 
+5

只是好奇......您在VB.NET中使用了哪些功能,您認爲您不能在C#中使用?即使這是真的,你可以用VB.NET建立一個DLL,並在你的C#項目中利用它。 – Brad

+0

的確如此,VB.NET支持ByRef參數是它的擴展方法。 http://stackoverflow.com/questions/1259103/doesnt-c-sharp-extension-methods-allow-passing-parameters-by-reference – Achilles

+0

它都編譯爲相同的東西(MSIL),所以不會有任何區別用戶。通常組件是根據它們執行的功能命名的。我不認爲會有一個乾淨的解決方案,並且對於用戶來說(他必須記得那個特定函數在哪個任意程序集中)是非常令人沮喪的。哪些功能非常重要,以至於它們會促使您拆分組件? – JDB

回答

2

啊......剛纔看到你的評論。我建議在C#中實現大多數擴展方法並將其稱爲「Core」,然後在VB.NET中實現額外功能並將其稱爲「擴展」。

然後,讓VB.NET顯式引用Core並繼承它。然後,用戶可以使用Core組件來完成大部分任務,或者使用Extended組件來實現附加功能。

編輯:我仍然認爲你的用戶會更好,如果你想出了一種不分割組件的方式,但顯然我不知道你的所有需求/實現細節。

4

如何命名項目來表達它們的意思,同時區分它們是用不同的語言實現的?

我實際上是想不是轉達這個。提供兩個項目名稱,這些名稱本身是有意義的。每個項目都應該可以使用兩種語言,因此無論用於創建項目的語言如何,名稱都應該是有意義的。

+1

+1 - 良好的命名約定對程序員來說至關重要。它在發現上有所不同,這可能是我們所做的一半。 – JDB

相關問題