c# - 使用 T 从 Dictionary<string, object> 转换值

标签 c# casting

我有一个像这样从 Dictionary 继承的类

public class ManagedSettings : Dictionary<string, object>

因为我希望能够做到这一点

public object this[string key, bool myVar = true]
{
    get{...}
    set{...}
}

所以用户可以做

managerSettingVar["hisKey"] = hisValue;

但现在我想允许用户做这样的事情

managerSettingVar<bool>["hisKey"]

因此键“hisKey”的值已经转换为 bool 值。 这甚至可能像我建议的那样吗?我尝试使用 T,但还不够幸运。 有点像

public T this<T>[string key, bool myVar = true]

最佳答案

不,这是不可能的。索引器不能通用。

您可以创建一个通用的 GetValue 函数:

public T GetValue<T>(string key)
{
    return Convert.ChangeType(this[key], typeof(T));
}

或者,只需要转换这些值:

public T GetValue<T>(string key)
{
    return (T)this[key];
}

关于c# - 使用 T 从 Dictionary<string, object> 转换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358000/

相关文章:

c# - 如何从 C# 中的 HTTP Post 访问 header 信息?

c++ - 如何将 void* 转换为 size_t?

Java 类型转换、对象类型和重载问题

sql - SELECT CONVERT(VARCHAR(10),GETDATE(),110)110在这里是什么意思?

c# - 通用处理程序参数大小限制?

c# - 如何使用 docker 在 dotnet 上优雅地关闭?

c# - html.raw 未呈现

c# - 从 user32.dll EnumDisplayDevices 取回坏字符串

ios - 将字典从 swift 发送到 objective-c 类

C++ 类型转换与隐式构造函数