2010-07-12 103 views
2

我需要將此代碼從C#轉換爲VB。我不確定正確的語法。C#到vb.net轉換

C#

[XcoWorkerExtension(Optional = new Type[] { typeof(Subscribe<OnNewsArrived>) })] 
    private readonly XcoPublisher<OnNewsArrived> publisher = new XcoPublisher<OnNewsArrived>(); 

這是我想出在VB:

<XcoWorkerExtension([Optional]:=New Type() {GetType(Subscribe(Of OnNewsArrived))})> _ 
    Private ReadOnly publisher As New XcoPublisher(Of OnNewsArrived)() 

C#版本運行良好,但是當我嘗試運行VB版本我得到這個例外:

System.IO.FileLoadException未處理 消息=給定的程序集名稱或代碼庫無效。 (從HRESULT異常:0x80131047) 源= mscorlib程序

例外在此子的第一行中產生:

internal XcoWorkerExtensionAttribute Get_worker_extension_attribute(FieldInfo field) 
    { 
     object[] fieldAttrs = field.GetCustomAttributes(typeof(XcoWorkerExtensionAttribute), false); 
     object[] classAttrs = field.FieldType.GetCustomAttributes(typeof(XcoWorkerExtensionAttribute), false); 
     if (fieldAttrs.Length > 0 && classAttrs.Length == 0) 
      throw new XcoWorkerException("A field can only be marked with the XcoWorkerExtension attribute when its type is also marked with this attribute"); 

     if (fieldAttrs.Length > 0) 
      return (XcoWorkerExtensionAttribute)fieldAttrs[0]; 
     if (classAttrs.Length > 0) 
      return (XcoWorkerExtensionAttribute)classAttrs[0]; 
     return null; 
    } 

回答

2

對不起用於給予 「元答案」。

對於像這樣的小轉換,如果您不確定語法和/或結果,Reflector是一個不錯的工具。使用

可能性:

  1. 編譯C#和反編譯到VB.Net。
  2. 編譯在VB.Net,比較原始
+0

好吧,我想我已經消除了synatx作爲錯誤的原因。我使用了反射器,並提出了相同的確切代碼。 – jweaver 2010-07-12 15:22:19

0

C# to VB Converter

曾任職我的項目之一,雖然我懷疑有幾件事情,這將使它不高興。你也是。

+0

我假設他已經嘗試過,看看它如何生成他使用的相同的VB.NET代碼。 – Powerlord 2010-07-12 14:54:39

+0

我試過這個轉換器和另一個以及兩個想出了相同的結果。 – jweaver 2010-07-12 15:16:06

+0

夠公平的,我沒有試過插入你的代碼。你做過標準的東西,比如確保VB項目具有相同的引用,使用相同版本的.NET等? – Carlos 2010-07-12 15:20:11