将对象转换为其他数据类型的通用方法?

时间:2013-10-10 20:53:39

标签: c# .net

我有多行,我明确表示要将某些内容转换为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?
}

这样的事情是否可能?

2 个答案:

答案 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));
}