0

動作のような一時データを使用して、強く型付けされた複雑なセッション クラスを構築しようとしています。データの永続性を確保するために値を設定する方法について少し混乱しています。

コードスケッチの下にいくつか質問があります

public class SomeService : ISomeService
{...
  ServiceObject _serviceObject;
  public SomeService(){
    _serviceObject = new ServiceObject();
  }

public SomeMethod(int z){
  if (ServiceObject.A != null){
    _serviceObjct.A = SomeMethodToGenerateA(z);
  }
  return _serviceObjct.A; 
}


[Serializable]
private class ServiceObject{
  public string A {
   get { return GetFromSession().a;}
   set { var sO = GetFromSession();
        sO.a = value;
        StoreInSession(sO);}
 }


 prop B ...
 prop C ...
 prob D ...

 private const string ServiceObjectKey = ServiceObjectKey 
 private void StoreInSession( ServiceObject nO ){
   Session[ServiceObjectKey] = nO;
 }

 private ServiceObject GetFromSession( ){
   return (ServiceObject)Session[ServiceObjectKey]; 
 }

 public void ClearObject(){
   Session[ServiceObjectKey] = new ServiceObject();
 }     

} }

q1. セッション変数は参照によって機能しますか? すなわち。だろう

public string A {
    get { return GetFromSession().a;}
    set { var sO = GetFromSession();
          sO.a = value;}
 }

の代わりに働く

public string A {
    get { return GetFromSession().a;}
    set { var sO = GetFromSession();
         sO.a = value;
         StoreInSession(sO)}
}

q2. このオブジェクトについて考慮すべき追加の考慮事項はありますか? ある時点で、プロセス外ストレージに移動する必要がある場合があります。たくさんのセッションにアクセスします (リクエストごとに最大 12 回!)

q3. このデザインパターンに名前はありますか?

2/3 の質問を取得すると、あなたの勝ちです!

また、これを一時データ オブジェクトとして使用する予定です。onactionexecuted メソッドでの要求の最後に、オブジェクトをクリアします [if(!actionresult is RedirectResult), then reset the object]

メタ: (この質問が SO サイトよりもフォーラムの方が適切である場合は、投稿する場所を教えてください。すぐに削除します。この質問が適切ではないことは承知しています。)

4

0 に答える 0