使用T </string,>转换Dictionary <string,object =“”>中的值

时间:2013-05-03 11:35:29

标签: 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]

1 个答案:

答案 0 :(得分:5)

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

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

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

或者,只需要输入值:

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