値の取得または値の設定Session
に使用するIISオブジェクトのように取得および設定できるクラスライブラリを作成するにはどうすればよいですか?var x = objectname("key")
objectname("key") = x
3 に答える
通常、セッションデータをラップし、次のようにタイプセーフにする静的クラスがあります。
public static class MySessionHelper
{
public static string CustomItem1
{
get { return HttpContext.Current.Session["CustomItem1"] as string; }
set { HttpContext.Current.Session["CustomItem1"] = value; }
}
public static int CustomItem2
{
get { return (int)(HttpContext.Current.Session["CustomItem2"]); }
set { HttpContext.Current.Session["CustomItem2"] = value; }
}
// etc...
}
次に、アイテムを取得または設定する必要がある場合は、次のようにします。
// Set
MySessionHelper.CustomItem1 = "Hello";
// Get
string test = MySessionHelper.CustomItem1;
これはあなたが探していたものですか?
編集:あなたの質問に対する私のコメントによると、アプリケーション内のページから直接セッションにアクセスするべきではありません。ラッパークラスは、アクセスタイプを安全にするだけでなく、すべての変更を行うための中心点を提供します。ラッパーを使用するアプリケーションを使用すると、セッションを使用するすべてのページに変更を加えることなく、いつでもセッションを選択したデータストアに簡単に交換できます。
ラッパークラスを使用することについて私が気に入っているもう1つの点は、セッションに格納されているすべてのデータを文書化することです。次のプログラマーは、ラッパークラスを確認するだけで、セッションに格納されているすべてのものを確認できるため、同じデータを複数回格納したり、セッションに既にキャッシュされているデータを再フェッチしたりする可能性が低くなります。
Dictionary<string, Object>
この効果を実現するために、または同様の一般的な辞書を使用できると思います。たとえば、ラッパーのカスタムデフォルトプロパティを使用して、存在しないアイテムにアクセスするときにオブジェクトを追加するには、ラッパーコードを作成する必要があります。
あなたはこのようなものを使うことができます
public class Session
{
private static Dictionary<string, object> _instance = new Dictionary<string, object>();
private Session()
{
}
public static Dictionary<string, object> Instance
{
get
{
if(_instance == null)
{
_instance = new Dictionary<string, object>();
}
return _instance;
}
}
}
そして、このように使用します
Session.Instance["key"] = "Hello World";