2017-09-07 1 views
0

일부 기존 VB.Net 코드를 C#으로 마이그레이션하려고합니다. Telerik 코드 변환기를 사용하고 있습니다. 여기 이 코드에서 메서드 그룹에서 입력 오류로 변환 할 수없는 이유는 무엇입니까?

... 나는이 방법 그룹 '변환 할 수 없습니다 얻고있다

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 
    //======================================================= 

내 기존 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의 코드 변환의 출력입니다 'to convectionTo.GetType 아래에'Type '오류 (적색 줄무늬)가 있습니다. .GetType 뒤에 괄호를 추가하려고했지만 "System.Aray '형식을'int [] '형식으로 암시 적으로 변환 할 수 없습니다."

코드 의도는 ENUM 문자열 값과 형식을 제공하는 것입니다. ENUM의 정수 값을 가져옵니다.

모든 아이디어는 크게 감사하겠습니다.

답변

4

나는 그것이 괄호의 많은 실종, 그 코드 변환기를 사용하여 지금 중지 할 수 좋을 것 :

  • 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()

그러나, 여기 당신이 원하는 것을 할 수있는 쉬운 방법입니다

이 가 그들은 VB.NET 코드에서 누락하고 있기 때문에 괄호가 누락
+0

이 ... 그가 아니다

public static int GetEnumIntFromString(string value, Enum convertTo) { return (int)(Enum.Parse(convertTo.GetType(), value); } 
가 변환기의 잘못. VB.NET은'()'으로 끝내지 않고 메서드 호출을 지원합니다. –

+0

@VisualVincent VB.NET에서 프로그래밍을 시작했습니다. 변환기는 C#에서 유효하지 않은 것을 알아야하며 실패하거나'()'을 추가합니다. –

+0

어떻게? Trim이 메서드, 속성 또는 필드인지 여부는 알 수 없습니다. 구문을 변환하기 때문에 사용자 정의 클래스 및 기타 사용자 정의 멤버를 참조하는 스 니펫을 아무 것도 불평하지 않고 변환 할 수 있습니다. –

관련 문제