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的に言うと)が必要。

図 名前空間

次回は

今日の練習問題の解説と確認テストをします。




このブログの人気の投稿

6月27日(火)1、2コマ目

6月20日(火)1、2コマ目

7月4日(火)1、2コマ目