【问题标题】:Getting type of not initialized variable获取未初始化变量的类型
【发布时间】:2012-02-19 17:12:13
【问题描述】:

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

在图片中快速观察显示ameliyatGirisBilgileri变量的类型名称,即使它没有被初始化。

【问题讨论】:

  • 那张图片看不懂,描述也不是很容易理解。您能否提供一个简短但完整的程序来说明您正在尝试做什么?
  • 当您使用它时,也许也可以将 `ameliyatGirisBilgileri' 重命名为其他名称
  • 如果是局部变量那么反射就没用了,你是说类字段还是属性?
  • 请参阅 [stackoverflow.com/questions/930147/…,查看 herzmeister 的第三个答案。 [1]:stackoverflow.com/questions/930147/…
  • 我会放更好的照片。 @vc74,是的,我正在寻找 giris 变量的属性类型。

标签: c# reflection initialization gettype


【解决方案1】:
FieldInfo fieldInfo = typeof(MyClass).GetField("ameliyatGirisBilgileri", BindingFlags.Public | BindingFlags.Instance);
Type fieldType = fieldInfo.FieldType;

抱歉,我太懒了,无法完整输入您的班级名称。

【讨论】:

    【解决方案2】:

    您应该能够使用主类型上的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”类型,具有“某些值”值。

    注意:如果字段不是public,则必须将一些BindingFlags 传递给GetField(...)GetFields(...) 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 2017-02-23
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多