5月18日(木)1、2コマ目
今日の予習
拡張Sessionクラス
前回紹介したSessionクラスはint型、string型、byte[]のデータしか扱うことができません。
他の型も扱うことができるように、拡張クラスという仕組みを使ってSessionクラスを拡張します。
SessionExtentions.cs
〇Sessionオブジェクトに保存する
データをSerializer.Serialize()で文字列に変換して、Session.SetString()で文字列としてSessionオブジェクトに保存しています。
〇Sessionオブジェクトから取り出す
Sessionオブジェクト中のデータ(string型)をSession.GetString()で取り出し、Serializer.Deserialize()で文字列から元の型に変換しています。
〇Tとか<T>は?
Tは型パラメータで、このクラス作成時に型を指定せず、このクラス利用時に型をする仕組みです。Set()メソッドやGet()メソッド実行時にTに型を指定して利用します。
例)SessionオブジェクトにItemクラス型のデータitemをキー"data"で保存する
HttpContext.Session.Set<Item>("data", item);
例)Sessionオブジェクト中のキー"data"に紐づくデータ(Itemクラス型)をとりだす
Item item = HttpContext.Session.Get<Item>("data");
今日、やったこと
Sessionを拡張
今日のホワイトボード
サンプルアプリケーション
Sessionオブジェクトにbyte[]、int、string以外も格納できるSessionExtentionsクラスを作成した。
|
| 図 サンプルアプリケーションとSessionのイメージ |
Programs.cs
以前のSessionオブジェクトを使うための設定をすればOK。
SessionExtentions.cs
今回のポイント。このクラスのGet<T>()、Set<T>()でbyte[]、int、string以外のオブジェクトを扱う。
Item.cs
商品名と数量をまとめて扱うためのクラス。
Index.cshtml
Sessionオブジェクトから選択済み商品リスト(List<Item>)を取り出す際、Get<T>()を使っている。
Index.cshtml.cs
Sessionオブジェクトに選択済み商品リスト(List<Item>)を格納する際、Set<T>()を使っている。
名前空間について
Javaのパッケージと同じ。
SessionExtentions.csとItem.csは同じ名前空間。
Index.cshtmlとIndex.cshtml.csは同じ名前空間。
Index.cshtmlやIndex.cshtml.csからItem.csやSessionExtentions.csを使うには名前空間のインポート(Java的に言うと)が必要。
|
| 図 名前空間 |

