2011-04-02 77 views
0

我想要一個函數,可以將「字符串」轉換爲給定類型T. 即。我想實現這樣的功能:c#:如何將字符串轉換爲自定義模板類型(即實現「T convertTo <T>(字符串)」)

T convertTo<T>(string stringToConvert) 

牛逼可能實際上是簡單類型或枚舉,但我不知道如何在運行時檢查實際的T形。即我不能寫這樣的東西:

if (T instanceof MyEnum) { return MyEnum.Parse(stringToConvert); } 

我該如何實現我的功能呢?

回答

1
return (T)Enum.Parse(typeof(T), stringToConvert); 
+0

如果你已經檢查了發佈日期,你會看到我的張貼之前DarkBobG的一分鐘。 – Femaref 2011-04-02 21:20:51

+0

哎呀,你是對的!它有一個非重複的答案仍然不會受到傷害。 – Gabe 2011-04-02 21:21:56

+0

我剛剛編輯了我的答案几次,因爲我使用了不同的變量名稱,所以我的原因在他的下面。 – Femaref 2011-04-02 21:23:10

1
if (typeof(T) == typeof(MyEnum)) 
    return (T)Enum.Parse(typeof(T), stringToConvert); 
0

最後我實現的功能是這樣的:

private static T ConvertFromString<T>(string text) 
    { 
     if (typeof(Enum).IsAssignableFrom(typeof(T))) 
     { 
      try 
      { 
       return (T)Enum.Parse(typeof(T), text); 
      } 
      catch (ArgumentException e) 
      { 
       return default(T); 
      } 
     } 
     return (T)Convert.ChangeType(text, typeof(T)); 
    } 
相關問題