Получение типа неинициализированной переменной - PullRequest
0 голосов
/ 26 января 2012

Существует основная переменная, которая имеет неинициализированные переменные.Мне нужно получить тип неинициализированного переменного типа с отражением.Потому что я генерирую значения динамически, но не могу получить типы переменных основной переменной.

На рисунке Quick Watch показывает имя типа переменной ameliyatGirisBilgileri, даже если она не инициализирована.*

as shown in Type field of QuickWatch

Ответы [ 2 ]

1 голос
/ 26 января 2012
FieldInfo fieldInfo = typeof(MyClass).GetField("ameliyatGirisBilgileri", BindingFlags.Public | BindingFlags.Instance);
Type fieldType = fieldInfo.FieldType;

Извините, но мне лень полностью вводить название вашего класса.

0 голосов
/ 26 января 2012

Вы можете получить FieldInfo для переменных в типе, используя метод GetField(...) или GetFields(...) для основного типа. Ниже приведена короткая программа, демонстрирующая, как вы можете это сделать:

class Program
{
    public string mStringType = null;

    static void Main(string[] args)
    {
        var program = new Program();

        try
        {
            var field = program.GetType().GetField("mStringType");

            Console.WriteLine("Field '{0}' is of type '{1}' and has value '{2}'.", field.Name, field.FieldType.FullName, field.GetValue(program));

            program.mStringType = "Some Value";

            Console.WriteLine("Field '{0}' is of type '{1}' and has value '{2}'.", field.Name, field.FieldType.FullName, field.GetValue(program));
        }
        catch (NullReferenceException)
        {
            Console.WriteLine("Error");
        }

        Console.ReadKey();
    }
}

Это дает следующий вывод в окне консоли:

Поле 'mStringType' имеет тип 'System.String' и имеет значение ''.

Поле «mStringType» имеет тип «System.String» и имеет значение «Some Value».

Примечание. Если поля не public, вам придется передать некоторые BindingFlags в методы GetField(...) или GetFields(...).

...