获取未初始化变量的类型

时间:2012-01-26 16:00:06

标签: c# reflection initialization gettype

主变量有未初始化的变量。我需要使用反射检索未初始化的varible类型。因为我动态生成值但无法获取主变量类型的变量类型。

在快速监视图片中显示ameliyatGirisBilgileri变量的类型名称,即使它未初始化。

as shown in Type field of QuickWatch

2 个答案:

答案 0 :(得分:1)

FieldInfo fieldInfo = typeof(MyClass).GetField("ameliyatGirisBilgileri", BindingFlags.Public | BindingFlags.Instance);
Type fieldType = fieldInfo.FieldType;

抱歉,我太懒了,不能完全输入你班级的名字。

答案 1 :(得分:0)

您应该能够使用主要类型上的GetField(...)GetFields(...)方法获取类型中变量的FieldInfo。下面是一个简短的程序,演示了如何实现它:

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(...)方法。