Почему я получаю сообщение "Невозможно преобразовать из группы методов в ошибку типа" с этим кодом?

Я пытаюсь перенести какой-то устаревший код VB.Net на C#. Я использую Telerik Code Converter.

Вот мой старый кодекс 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
    //=======================================================

Я получаю сообщение Не удается преобразовать из "Группа методов" в ошибку "Тип" (красная линия заглушки) в файле convretTo.GetType. Я пытался добавить скобки после.GetType, но это просто дало мне еще одну ошибку: "Не удалось неявно преобразовать тип" System.Aray "в" int[] ""

Целью кода является предоставление строкового значения ENUM и типа ENUM и получение целочисленного значения перечисления.

Любые идеи очень приветствуются.

1 ответ

Решение

Я бы посоветовал вам прямо сейчас прекратить использование этого конвертера кода, в нем отсутствует МНОГО скобок:

  • 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);
}
Другие вопросы по тегам