いくつかのスコープ(状態)を検索対象にして値を得る

一番小さいスコープから一番大きいスコープまでを自動でたどっていくのって、誤って間違ったデータを取得してしまう可能性が高いと思うのです。だから、探すスコープ(状態)とその順番を指定できるといいのかもしれない。

たとえば次のようなクラスを用意して


public static class StateFinder
{
public static T Get<T>(string key, StateKind kind, params StateKind[] kinds)
{
/// 指定されたkindやkindsの順番で値を探してTに変換して返す
return ...;
}
}

public enum StateKind
{
HttpContext,
Redirection,
View,
Session,
Application
}

こう使う


var value = StateFinder.Get<string>("hoge", StateKind.View, StateKind.Redirection);

これは、まずViewStateをhogeというkeyで探してあればそれを返し、なければRedirectionStateをhogeというkeyで探しあればそれを返すという意味です。こういうユーティリティを使わないとhogeというキーを複数指定したりそれぞれでキャストを指定したりしないといけなくなってそれが面倒くさいんですよね。