2014-08-30 66 views
0

如何獲得類型的成員,忽略其的值C#獲取成員的類型忽略它的值?

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"? 
    } 

} 
+0

你需要使用它之前聲明變量。 – 2014-08-30 19:16:26

+0

@AsadAli你是什麼意思? – user3325976 2014-08-30 19:16:56

+0

變量'a'尚未聲明,因此您無法使用它。如果您嘗試使用'a'屬性,它將不會返回任何內容。 – 2014-08-30 19:17:30

回答

4

得到它的類型而不是一個實例的唯一方法是使用聲明類型:

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

這很好,我可以這樣做,而不用字符串訪問成員,而是使用成員的引用本身呢? – user3325976 2014-08-30 19:22:17

+0

或者,我可以得到引用成員的名字嗎? – user3325976 2014-08-30 19:22:52

+0

@ user3325976:可以,使用lambda(而不是'a',寫入'()=> a')和表達式樹。 – 2014-08-30 19:30:12