我有一个继承自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]
答案 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];
}