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」の値はすでに bool としてキャストされています。私が提案しているように、それは可能ですか?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 に答える