私はこのようなクラスを持っています:
public class SomeClass
{
private const string sessionKey = "__Privileges";
public Dictionary<int, Privilege> Privileges
{
get
{
if (Session[sessionKey] == null)
{
Session[sessionKey] = new Dictionary<int, Privilege>();
}
return (Dictionary<int, Privilege>)Session[sessionKey];
}
}
}
さて、これをイドしたら…
var someClass = new SomeClass();
var p = someClass.Privileges[13];
...そしてキー13がありません。次のようなエラーが表示されます。
The given key was not present in the dictionary.
上記と同じ方法でアクセスできるプロパティが必要ですが、キーがない場合はデフォルト オブジェクトを返します。
このようなインデクサープロパティを作成してみました...
public Privilege Privileges[int key]
{
get
{
try { return _privileges[key]; }
catch { return new Privilege(); }
}
}
...しかし、それは C# 2008 言語機能ではないようです。
同じ方法でプロパティにアクセスするにはどうすればよいですか?ただし、キーが存在しない場合はデフォルトのオブジェクトを取得できますか?