我有多行,我明确表示要将某些内容转换为string
或bool
或date
等。
是否有可能以某种方式将其封装在我传递我想要转换的对象的方法中,并传递我想要获得的内容?
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 :(得分:5)
您需要围绕Convert.ChangeType()
编写通用包装:
public T GetValue<T>(string key) {
return (T)Convert.ChangeType(..., typeof(T));
}
答案 1 :(得分:1)
public T GetValue<T>(string key, T type)
{
return Convert.ChangeType(object.FirstOrDefault(x => x.Key == key).Value, typeof(T));
}