2009-09-30 125 views
0

我需要從包含數據的字符串轉換爲使用反射傳遞的某種類型的對象。我有一個不可序列化的對象,其中包含任何類型的屬性,並且我想將數據加載到該對象。如何將字符串轉換爲任何類型的對象?

例如,該對象有一個屬性,Color BgColor。當我嘗試將「紅色」值設置爲該屬性時,我得到的轉換不可能從字符串轉換爲顏色。我需要一般的代碼。

回答

0

嘗試Convert.ChangeType進行一般轉換。

但在你的情況我覺得Color.FromName方法是最好的:

從預定義顏色的指定名稱創建Color結構。

+0

沒有不幸的是我知道這件事情,並沒有幫助,它可以將120 System.Web.UI.WebControls.Unit例如?在XML中我有一個字符串和寬度屬性類型是單位 – 2009-09-30 13:28:24

+0

有沒有一個通用的方法?或者我應該使用開關盒或嘗試通過反射來查找解析方法? – 2009-09-30 13:29:54

0

如果你需要做的是一個字符串轉換爲它的價值在enum,您可以使用類似於下面的代碼:

public static T ToEnum<T>(this string original) 
{ 
    Array values = Enum.GetValues(typeof(T)); 

    foreach (T value in values) 
    { 
     if (value.ToString().ToUpperInvariant() == original.ToUpperInvariant()) 
      return value; 
    } 

    throw new NotFoundException(); 
} 

如果你需要轉換其他類型的,那麼也許指定字符串的類型和格式可能會幫助人們更好地指導你。

+0

屬性類型不是枚舉總是,我從XML加載ASP.NET控件,並希望從xml值設置所有控件屬性,但ASP.NET以某種方式將129 PX字符串轉換爲UNIT類型,在我的情況下,我得到一個錯誤 – 2009-09-30 13:33:33

相關問題