2012-02-23 155 views
1

獲取枚舉的witnin類類型我有一個枚舉像通過C#反射

namespace EnumTest 
    { 
    public class Enumeration 
    { 
     public Enumeration(); 

     public enum Days 
     { 
      day = sunday, 
      night = monday 
     } 
    } 
} 

我怎麼能得到通過反射天類型的信息。

Type type = assembly.GetType(Days); 

Type type = typeof(Days)將返回Days的Type信息。如果我有String s = "Days",使用這個字符串我需要獲取Days的Type信息。

我需要的那種類型=

+0

你需要'枚舉+ Days'的名字,我想。 – Mehrdad 2012-02-23 07:30:10

+0

你需要哪些信息,顯示預期的名字 – sll 2012-02-23 07:30:55

+2

這段代碼甚至不會編譯 - a)枚舉值不能被輸入爲字符串b)它們被','不''分隔。你應該從一些編譯的代碼開始,然後當你有特定的問題時,來這裏問問。我也不明白這裏想要成爲什麼 - 我認爲你需要提供更多的背景。 – 2012-02-23 07:32:41

回答

5

我不確定我是否理解你。如果在字符串對象中有類型名稱並且想要獲取類型對象,則需要編寫整個類型名稱。
而且因爲你的枚舉是一個內部類型,所以完整類型名稱是「EnumTest.Enumeration.DaysEnumTest.Enumeration + Days」。

要獲得類型的對象,你可以調用然後

Type type = assembly.GetType("EnumTest.Enumeration.DaysEnumTest.Enumeration+Days"); 
+0

謝謝老兄。它工作,非常感謝你 – 2012-02-27 07:41:33

4

天要訪問您所需要的類型很簡單:

Type type = typeof(Enumeration.Days); 

注意,因爲你已經在你的問題寫它枚舉聲明將無法工作。它應該是這樣的:

public enum Days  
    {  
     Monday, 
     Tuesday, 
     ... 
    } 
+0

事實上正確,但我懷疑這個問題存在根本性的錯誤,即爲什麼這種類型很有趣? – 2012-02-23 07:40:18

+0

@Adam,我的一個方法有一個枚舉參數。 GetDays(int dayCount,EnumTest.Enumeration.Days EnumTest.Enumeration.Days.day),我需要通過反射調用此方法。所以我在尋找類型 – 2012-02-23 07:43:54

+1

@VinodKannan發佈你正在編寫的代碼來調用該方法,並指出你卡在哪裏。 – phoog 2012-02-23 07:55:00