C# 为什么我无法使用此代码从方法组转换为类型错误?
我正在尝试将一些遗留的VB.Net代码迁移到c#。我正在使用Telerik代码转换器 这是我遗留的VB.Net代码C# 为什么我无法使用此代码从方法组转换为类型错误?,c#,vb.net,enums,vb.net-to-c#,C#,Vb.net,Enums,Vb.net To C#,我正在尝试将一些遗留的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
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
//=======================================================
我在convereto.GetType下遇到无法从“方法组”转换为“类型”错误(红色的曲线)。我尝试在.GetType之后添加括号,但这只是给了我另一个错误“无法将类型'System.Aray'隐式转换为'int[]”
代码的目的是提供枚举字符串值和枚举类型,并获取枚举的整数值
如果您有任何想法,我们将不胜感激。我建议您立即停止使用该代码转换器,因为它缺少很多括号:
=>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);
}
我建议您现在停止使用该代码转换器,它缺少很多括号:
=>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代码中缺少。。。那不是转换器的故障。VB.NET支持调用方法,而不必在方法后面加上
()
@visualvent。我知道,我开始在VB.NET中编程。转换器应该意识到这在c中是无效的,要么失败,要么添加缺少的()
?它不可能知道Trim
是方法、属性还是字段。它转换语法,这就是为什么您可以转换引用自定义类和其他自定义成员的代码段,而不必抱怨任何事情。@VisualEvent保留框架提供的类列表?我的意思是,例如,你不能扩展string
来拥有一个自定义属性,所以如果它不在框架中,就让它保持原样,所以string.ToUpper
显然不是一个属性/字段,而是一个方法。这也需要对代码进行[不必要的]解析。到目前为止,我还不知道有哪个转换器能做到这一点。。。如果你知道的话,我很想看看!它缺少括号,因为它们在VB.NET代码中缺少。。。那不是转换器的故障。VB.NET支持调用方法,而不必在方法后面加上()
@visualvent。我知道,我开始在VB.NET中编程。转换器应该意识到这在c中是无效的,要么失败,要么添加缺少的()
?它不可能知道Trim
是方法、属性还是字段。它转换语法,这就是为什么您可以转换引用自定义类和其他自定义成员的代码段,而不必抱怨任何事情。@VisualEvent保留框架提供的类列表?我的意思是,例如,你不能扩展string
来拥有一个自定义属性,所以如果它不在框架中,就让它保持原样,所以string.ToUpper
显然不是一个属性/字段,而是一个方法。这也需要对代码进行[不必要的]解析。到目前为止,我还不知道有哪个转换器能做到这一点。。。如果你知道的话,我很想看看!