1

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

public class ManagedSettings : Dictionary<string, object>

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

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

所以用户可以做

managerSettingVar["hisKey"] = hisValue;

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

managerSettingVar<bool>["hisKey"]

所以键“hisKey”的值已经被转换为布尔值。这甚至可能像我建议的那样吗?我尝试使用 T 但还没有幸运。就像是

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

1 回答 1

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];
}
于 2013-05-03T11:38:40.710 回答