2017-04-19 45 views
0

我們將所有應用程序會話存儲到Global類中。如何正確地將應用程序會話存儲到靜態實例中?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.SessionState; 
namespace MyApp 
{ 
    [Serializable] 
    public class AppSession : IRequiresSessionState 
    { 
     //Name that will be used as key for Session object 
     private const string SESSION_SINGLETON = "MyappSession"; 

     string _UserName; 
     int? _UserID ,_ClientID; 
     public int? UserID 
     { 
      get 
      { 
       return _UserID; 
      } 
      set 
      { 
       _UserID = value; 
      } 
     } 
     public string UserName 
     { 
      get 
      { 
       return _UserName; 
      } 
      set 
      { 
       _UserName = value; 
      } 
     } 
     public int? ClientID 
     {  
      get 
      { 
       return _ClientID; 
      } 
      set 
      { 
       _ClientID = value; 
      } 
     } 
     public MarketingSession Marketing { get; set; }  
    } 
} 

我們已經創建了另一個類屬性來維護網頁會話到不同MarketingSession類,如下

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.SessionState; 

namespace MyApp 
{ 
    [Serializable] 
    public class MarketingSession : IRequiresSessionState 
    { 
     private int? _ChannelId;  
     public int? ChallelId { get 
     { 
      return _ChannelId; } 
      set { _ChannelId = value; } 
     }  
    } 
} 

我不是100%肯定這是它維持會話類或不正確的方法。 和可以在此會話中創建非靜態的另一個Class對象嗎?

當我添加MarketingSession Class屬性時出現以下錯誤。

錯誤10的對象引用需要非靜態字段, 方法或屬性MyApp.AppSession.Marketing.get

更新我,如果我做來管理我的應用程序會話或不正確的方式? 如果方法是正確的,那麼如何解決這個錯誤?

+0

顯示在您初始化MarketingSession對象的代碼。 –

+0

不在AppSession類中初始化。我會改正方式嗎?我應該在AppSession類的MarketingSession屬性中使用靜態成員嗎​​? –

+0

MyApp.AppSession.Marketing.get - 您正在使用此方法,就好像它是靜態的。你需要在訪問它的屬性之前初始化你的AppSession對象,或者首先聲明它們是靜態的。 –

回答

0

Singleton Pattern似乎是你的情況下最好的解決方案。 您只想初始化Marketing對象一次,並在所有AppSession類實例中共享其值。

這正是這種模式的用途。 請務必閱讀以下關於如何使用它並使其適合您目標的最佳方式的示例。

https://msdn.microsoft.com/en-us/library/ff650316.aspx

http://csharpindepth.com/Articles/General/Singleton.aspx

https://www.dotnetperls.com/singleton

+0

好的謝謝..我會按照模式進行初始化。我們已經使用該模式.. –

+0

很高興我幫助。如果確實是你要找的東西,請務必回答你的問題。 –

+0

我應該在AppSession類中創建其他Marketing類或Normal對象的靜態對象嗎? 見下文.. static readonly MarketingSession _ms = new MarketingSession(); public MarketingSession Marketing { 得到 { return _ms; } } 還是我有? public MarketingSession Marketing {...} ? –

相關問題