2008-10-06 67 views
3

我希望這不會被認爲是重複的,因爲它比類似的問題更有針對性(我對C#到VB.net轉換實用程序的特定弱點感到好奇)。C#到VB.Net轉換實用程序是否正確處理自動屬性?

我一直在尋找使用像這樣的工具.net code converter將類庫轉換爲VB,因爲我是我的羣體中唯一一個熟悉C#的人。我遇到的問題是它不會爲自動屬性生成適當的VB。它創建空的get/set例程。

所以這個:

public string TransactionType { get; private set; } 

變爲這樣:

Public Property TransactionType() As String 
    Get 
    End Get 
    Private Set(ByVal value As String) 
    End Set 
End Property 

的工具鏈接herehere也有類似的問題 - 一些創建有效的性能,但他們不尊重的訪問級別設定例程。

旁邊的問題 - 如果你打算在DeveloperFusion上修復這個轉換器,你會讓它返回類似的東西嗎?

Private _TransactionType As String 
Public Property TransactionType() As String 
    Get 
     Return _TransactionType 
    End Get 
    Private Set(ByVal value As String) 
     _TransactionType = value 
    End Set 
End Property 
+0

爲什麼如果團隊的其他成員在VB中編碼,你是不是在VB中編碼,而是在C#中代替? – MagicKat 2008-10-06 15:09:02

+0

因爲我們在完全獨立的項目上編碼。不知何故,我所做的工作最適合讓5-10個人編寫單獨的程序,而不是讓我們全部在一個大型應用程序上。 – 2008-12-26 14:37:48

回答

4

我們現在已經修改了代碼生成器以支持這種情況。如果你發現任何其他我們做得不好的人,請給我寫一行。

2

我建議編譯代碼,並使用類似紅門的反射http://www.red-gate.com/products/reflector/index.htm來處理轉換。現在它不是「完美的」,我不確定它是否處理自動屬性(儘管我會想象它會)。

是什麼使得這種可能是當你將.NET語言編譯爲IL時,它們是完全一樣的。語言只是另一層。因此,看起來在他們的母語中相同的兩個屬性編譯成完全相同的IL代碼。因此,使用Reflector等其他語言反轉這種方法非常簡單快捷。

1

作爲您的側面問題的答案:是的,該代碼幾乎正是我想要它產生的。你不能讓它做到C#代碼所做的事情,就是讓變量的名稱「不可說」(即不可能在代碼中引用),但這可能足夠接近。

1

我建議檢出SharpDevelop(有時寫成#develop)。這是一個開放源代碼的.NET IDE,其中可以將C#轉換爲VB.NET,反之亦然。

2

我偶然發現了這一點,同時尋找一種使用反射器來自動化翻譯代碼的方法(因爲有幾個插件可以用其他語言生成代碼(甚至是PowerShell)),但是你讓我感到奇怪,所以我試了一下。設置爲NET 3.5的兼容性,它的例子轉換成這樣:

Property TransactionType As String 
    Public Get 
    Private Set(ByVal value As String) 
End Property 

如果你挖,它做報告,有編譯器生成的方法,它不會在VB.Net出口或C#與3.5兼容性上......但是,如果你把它切換到2.0,同樣的代碼會產生這樣的:

Property TransactionType As String 
    Public Get 
     Return Me.<TransactionType>k__BackingField 
    End Get 
    Private Set(ByVal value As String) 
     Me.<TransactionType>k__BackingField = value 
    End Set 
End Property 

<CompilerGenerated> _ 
Private <TransactionType>k__BackingField As String 

PS:如果你試圖使用像反射器反彙編器來生成代碼,記住保持.pdb文件所以你得到變量的專有名稱;)

+0

感謝有關.pdb文件和Reflector的提示。我不知道。 – 2008-10-17 12:18:34

相關問題