2013-10-10 57 views
1

我有多條線路,我expicitly說,我要的東西轉化爲stringbooldate等。將對象轉換爲其他數據類型的通用方法?

是否有可能方法,其中我通過,我想轉換對象,又通過內以某種方式封裝它我想得到什麼回報?

我有什麼現在

foreach (var item in archive.Items) 
{ 
    var newItem = new Item(); 
    newItem.Notes = Convert.ToString(item.FirstOrDefault(x => x.Key == "notes").Value); 
    newItem.IsPublic = Convert.ToBoolean(item.FirstOrDefault(x => x.Key == "ispublic").Value); 
} 

我想吃些什麼(僞)

foreach (var item in archive.Items) 
{ 
    var newItem = new Item(); 
    newItem.Notes = GetValue("notes", string) 
    newItem.IsPublic = GetValue("ispublic", bool) 
} 

// ... 

public T GetValue(string key, T type) 
{ 
    return object.FirstOrDefault(x => x.Key == key).Value; // Convert this object to T and return? 
} 

是這樣甚至可能嗎?

+0

你確實有必要將該值轉換還是隻是需要被類型強制轉換?如果'Value'返回一個對象,你可能只想投它,而不是轉換它。 –

回答

5

你會想要寫周圍Convert.ChangeType()一個通用的包裝:

public T GetValue<T>(string key) { 
    return (T)Convert.ChangeType(..., typeof(T)); 
} 
1
public T GetValue<T>(string key, T type) 
{ 
    return Convert.ChangeType(object.FirstOrDefault(x => x.Key == key).Value, typeof(T)); 
} 
相關問題