从对象字典中检索泛型类型值,没有异常

时间:2014-12-03 13:16:01

标签: c# generics dictionary boxing

是否存在一种通用方式(最好使用扩展方法),您可以检索从Dictionary<string, object>转换为正确类型的值(可以是十进制,短,整数或字符串),而不会在密钥执行时失败不存在?

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

using System;
using System.Collections.Generic;

public static class DictionaryExtensions
{
    public static T GetValue<T>(this Dictionary<string, object> dictionary, string key)
    {
        object value = null;
        if (!dictionary.TryGetValue(key, out value))
        {
            throw new KeyNotFoundException(key);
        }

        return (T)Convert.ChangeType(value, typeof(T));
    }
}

编辑:如果您不希望它抛出任何内容,只需删除抛出新KeyNotFoundException的行。我觉得这很方便,因为KeyNotFoundException从不包含未找到列的friggin名称。这样,错误消息将是列名: - )