2017-09-07 2 views
0

私はいくつかのレガシーVB.NetコードをC#に移行しようとしています。私はTelerikコードコンバータを使用しています。ここでこのコードでメソッドグループからタイプエラーに変換できないのはなぜですか?

は私の遺産VB.Netコード

Public Shared Function GetEnumIntFromString(ByVal value As String, ByVal convertTo As [Enum]) As Integer 
    Dim enumValueArray() As Integer 

    Try 
     If value.Trim.Length > 0 Then 
      enumValueArray = [Enum].GetValues(convertTo.GetType) 

      For Each i As Integer In enumValueArray 
       If value.ToUpper = [Enum].GetName(convertTo.GetType, i).ToUpper Then 
        Return i 
       End If 
      Next 
     End If 

     'Return Integer.MinValue 
     Throw New Exception("Invalid Enum value. Cannot convert '" & value & "' to " & convertTo.GetType.ToString) 
    Catch ex As Exception 
     Throw New Exception(ex.Message) 
    End Try 
End Function 

そして、ここでは、Telerik/sのコードコンバータから出力されている...

public static int GetEnumIntFromString(string value, Enum convertTo) 
    { 
     int[] enumValueArray = null; 

     try 
     { 
      if (value.Trim.Length > 0) 
      { 
       enumValueArray = Enum.GetValues(convertTo.GetType); 

       foreach (int i in enumValueArray) 
       { 
        if (value.ToUpper == Enum.GetName(convertTo.GetType, i).ToUpper) 
        { 
         return i; 
        } 
       } 
      } 

      //Return Integer.MinValue 
      throw new Exception("Invalid Enum value. Cannot convert '" + value + "' to " + convertTo.GetType.ToString); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.Message); 
     } 
    } 

    //======================================================= 
    //Service provided by Telerik (www.telerik.com) 
    //Conversion powered by NRefactory. 
    //Twitter: @telerik 
    //Facebook: facebook.com/telerik 
    //======================================================= 

私は「メソッドグループから変換できません取得しています'to' Type 'エラー(赤い波線)はconveretTo.GetTypeの下にあります。私は.GetTypeの後にかっこを追加しようとしましたが、 "暗黙的に 'System.Aray'型をint [] 'に変換できません"

コードの目的は、ENUM文字列値と型ENUMの値を取得し、列挙型の整数値を取得します。

アイデアをいただければ幸いです。

答えて

4

私はそれが括弧のLOTを欠けて、そのコードコンバータを使用して今すぐに停止することができことをお勧めしたい:

  • value.Trim.Length =>value.Trim().Length
  • convertTo.GetType =>convertTo.GetType()
  • value.ToUpper =>value.ToUpper()
  • Enum.GetName(convertTo.GetType, i).ToUpper =>Enum.GetName(convertTo.GetType(), i).ToUpper()
  • convertTo.GetType.ToString =>convertTo.GetType().ToString()

しかし、ここであなたが欲しいものを行うための簡単な方法です:

public static int GetEnumIntFromString(string value, Enum convertTo) 
{ 
    return (int)(Enum.Parse(convertTo.GetType(), value); 
} 
+0

彼らはVB.NETのコードに欠けているので、それは括弧が欠落している...それはありませんコンバータの故障。 VB.NETは '()'で接尾辞を付けずにメソッドを呼び出すことをサポートしています。 –

+0

@VisualVincent私はVB.NETでプログラミングを始めました。コンバータはそれがc#では有効ではないことを認識し、失敗するか、見つからない '()'を追加します。 –

+0

? 'Trim'がメソッド、プロパティ、さらにはフィールドであるかどうかは分かりません。これは構文を変換するため、カスタムクラスや他のカスタムメンバーを参照するスニペットを何も文句を言わずに変換することができます。 –

関連する問題