为什么我使用此代码时出现无法从方法组转换为类型错误?
Why am I getting Cannot Convert from Method Group to Type error with this code?
我正在尝试将一些遗留 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
//=======================================================
我在 converetTo.GetType 下收到无法从 'Method Group' 转换为 'Type' 错误(红色波浪线)。我尝试在 .GetType 之后添加括号,但这给了我另一个错误 "Cannot implicitly convert type 'System.Aray' to 'int[]'"
代码的目的是提供一个 ENUM 字符串值和 ENUM 的类型,并获取枚举的整数值。
如有任何想法,我们将不胜感激。
我建议您立即停止使用该代码转换器,它缺少很多括号:
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);
}
我正在尝试将一些遗留 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
//=======================================================
我在 converetTo.GetType 下收到无法从 'Method Group' 转换为 'Type' 错误(红色波浪线)。我尝试在 .GetType 之后添加括号,但这给了我另一个错误 "Cannot implicitly convert type 'System.Aray' to 'int[]'"
代码的目的是提供一个 ENUM 字符串值和 ENUM 的类型,并获取枚举的整数值。
如有任何想法,我们将不胜感激。
我建议您立即停止使用该代码转换器,它缺少很多括号:
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);
}