1

我有多行,我明确地说我想将某些东西转换为stringor boolor dateetc..

是否有可能以某种方式将它封装在我传递我想要转换的对象并传递我想要得到的东西作为回报的方法中?

我现在拥有的

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?
}

这样的事情甚至可能吗?

4

2 回答 2

5

您需要编写一个通用包装器Convert.ChangeType()

public T GetValue<T>(string key) {
    return (T)Convert.ChangeType(..., typeof(T));
}
于 2013-10-10T20:55:07.517 回答
1
public T GetValue<T>(string key, T type)
{
    return Convert.ChangeType(object.FirstOrDefault(x => x.Key == key).Value, typeof(T));
}
于 2013-10-10T20:56:26.947 回答