6月7日(火)1、2コマ目
今日の予習
ISessionを拡張
セッションオブジェクトはISessionクラス。データとして保存できるのは
- byte[]
- int
- string
のみ。使いずらいので、ISessionクラスに拡張メソッドを追加して対応。
ISessionに以下の2つの拡張メソッドを追加しています。
T Get<T>(string key)
void Set<T>(string key, T value)
Tはセッションオブジェクトに格納するモノの型。
今日、やったこと
Sessionオブジェクトにいろいろな型のデータを格納する今日のホワイトボード
拡張メソッドのGet<T>()、Set<T>()
作成したサンプル
セッションオブジェクトにSelectedItemクラスのListを格納する。
Startup.cs
前回と同じようにSessionオブジェクトを使うための設定を行う。
SelectedItem.cs
選択データ(商品名、松竹梅、数量)をまとめて格納するためのクラス。
SessionExtensions.cs
通常のSessionオブジェクトであるISessionにGet<T>()メソッド、Set<T>()メソッドを拡張メソッドとして追加する。
上のサンプルと同じ。
Index.cshtml.cs
OnPost()メソッドにて、拡張メソッドのGet<T>()、Set<T>()を使っているところがポイント。
Set<T>()、Get<T>()のTにはセッションオブジェクトに格納するデータの型を指定する。
Index.cshtml
ここでも拡張メソッドのGet<T>()を使ってSessionオブジェクトから選択商品のリストを取得している。
プロジェクトと名前空間
プロジェクトを作成すると同名の名前空間(Java的に言えばパッケージ)ができる。プロジェクト右クリックで追加されたクラスはこの名前空間に属する。
Pagesフォルダ以下のIndexModelクラス(Index.cshtml追加でできるクラス)の名前空間はプロジェクト名名前空間.Pagesになる。
![]() |
| 図 プロジェクトの名前空間 |
Index.cshtmlやIndex.cshtml.csからは名前空間が異なるため、クラス名だけではアクセスできない。
usingを使って名前空間を参照できるようにする必要がある。

