2016-05-26 4 views
2

ich the telerik code converter versuchen bin mit diesem VB-Code in C# zu konvertieren:Was ist der Grund für diesen Fehler bei der Code-Konvertierung?

''' <summary> 
''' Return the name of a property, field, or local variable from a lambda expression. 
''' </summary> 
''' <typeparam name="T">Type of the property, field, or local variable.</typeparam> 
''' <param name="expr">A lambda expression that refers to a property, field, or local variable, in the 
''' form: '() => Class.Property' or '() => object.Property'.</param> 
''' <returns>The name of the property represented by the provided lambda expression.</returns> 
Friend Function GetMemberName(Of T)(expr As System.Linq.Expressions.Expression(Of Func(Of T))) As String 
    Dim memberExpr As System.Linq.Expressions.MemberExpression = TryCast(expr.Body, System.Linq.Expressions.MemberExpression) 

    If memberExpr Is Nothing Then _ 
     Throw New ArgumentOutOfRangeException("The argument must be a lambda expression in the form: " & 
     "'() => Class.Member', '() => object.Member', or '() => fieldOrLocal'") 

    Const VBLocalPrefix = "$VB$Local_" 'odd prefix in $VB$ for local variable member names. 
    GetMemberName = memberExpr.Member.Name 
    If (GetMemberName.StartsWith(VBLocalPrefix)) Then GetMemberName = GetMemberName.Substring(VBLocalPrefix.Length) 
End Function 

Ich erhalte diese Fehlermeldung im Ausgabebereich:

CONVERSION ERROR: Code could not be converted. Details:

-- line 8 col 8: invalid NonModuleDeclaration

Please check for any errors in the original code and try again.

Ich habe Googled telerik "invalid NonModuleDeclaration" und "invalid NonModuleDeclaration" und hat die Ergebnisse durchgesehen, aber sie alle geben im Wesentlichen Workarounds (dh die antwortende Partei sagt "Hier ist die Konvertierung, die ich manuell für Sie getan habe) und erklären nicht, was den Fehler verursacht oder wie man ihn vermeidet.

Ich weiß, wie ich den Code manuell konvertieren kann, aber meine Frage ist: Warum kann der Konverter diesen Code nicht konvertieren?

+0

ich der Fehler in Zeile 8, Spalte 8 - was ist, wenn ich mich nicht irre, dieser Teil: 'System.Linq.Expressions.Expression (Of Func (Of T))'. –

+0

Meine schlechte, ich hatte die XML-Dokumente entfernt, um zu versuchen, um zu sehen, ob das der Grund war und auch der Code Einrückungen hatte - und ich kopierte die Ausgabe davon. Ich bekomme die gleiche Zeile/Spalte, wenn ich es zurück (aktualisiert). –

Antwort

3

Ich habe das Problem gefunden! Es ist aufgrund dieser Zeile:

Throw New ArgumentOutOfRangeException("The argument must be a lambda expression in the form: " & 
    "'() => Class.Member', '() => object.Member', or '() => fieldOrLocal'") 

Vielleicht ist der Konverter nicht auf dem neuesten Stand ist, aber nach dem Ampersand eines Unter Hinzufügen behebt das Problem und der Code nun erfolgreich umgesetzt wird:

Throw New ArgumentOutOfRangeException("The argument must be a lambda expression in the form: " & _ 
    "'() => Class.Member', '() => object.Member', or '() => fieldOrLocal'") 
+0

Gute Arbeit! Vielen Dank! –

+0

@roryap: Kein Problem! Froh, dass ich helfen konnte. –

Verwandte Themen