【问题标题】:C# get member's type ignoring it's value? [duplicate]C#获取成员的类型忽略它的价值? [复制]
【发布时间】:2014-10-24 12:07:27
【问题描述】:

我如何获得成员的类型,而忽略其价值

public static class Program
{

    public static String a {set; get;}

    public static void Main()
    {
         a = null;
         a.GetType(); //Cant do that, it's null, how can i get "String"?
    }

}

【问题讨论】:

  • 使用前需要先声明变量
  • @AsadAli 你是什么意思?
  • 变量a没有被声明,所以不能使用。如果您尝试使用 a 属性,它不会返回任何内容。
  • @AsadAli 这是一个属性...
  • 它是可编译的,除了 a.GetType();女巫我评论了

标签: c# .net reflection types member


【解决方案1】:

在没有实例的情况下获取它的类型的唯一方法是使用声明类型:

var type = typeof(Program)
     .GetProperty("a", BindingFlags.Static | BindingFlags.Public)
     .PropertyType;

【讨论】:

  • 这很好,我可以不用字符串访问成员,而是使用成员的引用本身吗?
  • 或者,我可以得到引用成员的名字吗?
  • @user3325976:是的,你可以,使用 lambda(而不是 a,写成 () => a)和表达式树。
  • @BenVoigt 那太好了,你能告诉我怎么做吗?
  • @user3325976:我将此标记为问题和答案的副本,向您展示如何获取PropertyInfo。然后从PropertyInfo 获取PropertyType
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多