Ich versuche, einige ältere VB.Net-Code zu C# zu migrieren. Ich benutze den Telerik Code Converter.Warum kann ich mit diesem Code nicht von der Method Group in Type-Fehler konvertieren?
Hier ist mein Vermächtnis VB.Net-Code
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
Und hier ist die Ausgabe von Telerik/s Codewandler ...
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
//=======================================================
ich bin immer Kann von ‚Method Gruppe nicht konvertieren 'to' Type 'Fehler (rote Squiggle-Linie) unter convretTo.GetType. Ich habe versucht, Klammern nach .GetType hinzufügen, aber das gab mir nur einen weiteren Fehler "Kann nicht implizit konvertieren Typ 'System.Aray' in 'int []'"
Die Absicht des Codes besteht darin, einen ENUM-String-Wert und den Typ von ENUM und erhalten einen ganzzahligen Wert der Enumeration.
Alle Ideen würden sehr geschätzt werden.
Es Klammer fehlt, weil sie in der VB.NET-Code fehlt ... Das ist nicht der Fehler des Konverters. VB.NET unterstützt Aufrufmethoden, ohne sie mit '()' zu versehen. –
@VisualVincent Ich weiß, dass ich begann in VB.NET zu programmieren. Der Konverter sollte erkennen, dass das in C# nicht gültig ist und entweder fehlschlagen oder das fehlende '()' hinzufügen. –
Wie? Es kann nicht wissen, ob "Trim" eine Methode, Eigenschaft oder sogar ein Feld ist. Es konvertiert die Syntax, weshalb Sie Snippets konvertieren können, die auf benutzerdefinierte Klassen und andere benutzerdefinierte Elemente verweisen, ohne dass sie sich über irgendetwas beschweren. –