2015-05-29 94 views
-3

我有兩個班在C#中的靜態Application變量是一個壞主意

public class DemoProperty 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string MenuCode { get; set; } 
     public string OriginalURL { get; set; } 
    } 

public class MyCommonProperties 
{ 
     private static List<DemoProperty> _DemoList; 
     public static List<DemoProperty> DemoList 
     { 
      get { return _DemoList; } 
      set { _DemoList = value; } 
     } 
} 

我需要的是保持整個project.For一些常見的數據,我已經使用的應用程序變量,並將其持有Dictionary<string,List<DemoProperty>>

Global.asx

void Application_Start(object sender, EventArgs e) 
{ 
     Application["DemoProperty"] = new Dictionary<string,List<DemoProperty>>(); 
     MyCommonProperties.DemoList= (Dictionary<string,List<DemoProperty>>)Application["CommonProperties"]; 
} 

其實我不知道更多關於它的缺點。如果這是一個壞主意,可以請你給我一個好的建議。

+0

什麼是「應用程序變量」? –

+0

它是哪種類型的應用程序,winform,webform,asp.net MVC? – Anil

+0

你在說什麼類型的應用程序? –

回答

-2

如果您需要保存靜態數據,可以使用這樣的事情:

public static class StaticVals 
{ 
    public static Dictionary<string,string> StaticDictionary; 
} 

正如我明白,你身邊掠過一個對象,在其中您保存運行時數據的參考。更簡單的方法是使用使用關鍵字static的屬性或類:這可確保此特定類或屬性在您的應用程序中只存在一次。

你可能想在這裏閱讀更多:http://www.codeproject.com/Articles/15269/Static-Keyword-Demystified

,如果你需要有多種配置使用Singleton模式不使用static類,例如替代。這種模式確保只存在給定類型的單個實例。更多關於單:http://www.oodesign.com/singleton-pattern.html

這種模式的一個簡單的例子是

public class StaticVals 
{ 
    private static StaticVals _instance; 
    public static StaticVals Instance 
    { 
     get 
     { 
      if (_instance == null) 
       _instance = new StaticVals(); 
      return _instance; 
     } 
    } 
    public Dictionary<string, string> StaticDictionary; 
} 

音符如何static關鍵字從屬性和類都消失了,這意味着你可以用於測試目的就像任何創建對象正常的對象。你會得到在「正常」代碼的實例

StaticVals.Instance.StaticDictionary 
+0

下降者請解釋什麼是根本錯誤? –

+0

OP的問題還不清楚,現在已經有很多解釋說明在這個網站上用靜態成員聲明一個靜態類。 _雖然不是OP的問題。 「像這樣的東西」也不是一個好的答案,它只是提供不能解釋任何東西的可複製粘貼代碼。 – CodeCaster

+0

感謝您的回覆 –