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

本文关键字:异常 泛型类型 对象字典 检索 | 更新日期: 2023-09-27 18:33:00

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

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

您可以执行以下操作:

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名称。这样,错误消息将是列名:-)