是否存在一种通用方式(最好使用扩展方法),您可以检索从Dictionary<string, object>
转换为正确类型的值(可以是十进制,短,整数或字符串),而不会在密钥执行时失败不存在?
答案 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名称。这样,错误消息将是列名: - )