2016-01-07 39 views
0

比如我有一個類的靜態列表:靜態列表的申報條件

public static List<MadjType> MAASource = new List<MadjType> 
    { 
     new MadjType{Id = 1, Name = "MAA - 1"}, 
     new MadjType{Id = 2, Name = "MAA - 2"}, 
     new MadjType{Id =3, Name = "MAA - 3"}, 
     new MadjType{Id = 4, Name = "MAA - 4"}, 
     new MadjType{Id = 5, Name = "MAA - 5"}, 
     new MadjType{Id = 6, Name = "MAA - 6"}, 
     new MadjType{Id = 7, Name = "MAA - 7"}, 
     new MadjType{Id = 8, Name = "MAA - 8"}, 
     new MadjType{Id = 9, Name="MAA - 9"}, 
     new MadjType{Id = 10, Name= "MAA - 10"}, 
    }; 

而且我有告訴我,我是否建立了版本1或版本2的資源文件(我用這個作爲有條件的解決方案的其他部分,如

if (ConfigurationResource.Version == "Version2") 
{ 
//return different values 
} 

)。

所以,對於版本2,我不希望添加這個靜態名單上的最後幾個項目,所以意思是:

new MadjType{Id = 8, Name = "MAA - 8"}, 
    new MadjType{Id = 9, Name="MAA - 9"}, 
    new MadjType{Id = 10, Name= "MAA - 10"}, 

當我使用版本2在爲申報不應該包括在MAASource資源文件。

有什麼辦法可以爲此靜態列表做這件事嗎?

+0

你不能讓MAASource只包含通用元素,然後根據版本1的條件,版本2添加相應的元素 – Agalo

回答

2

這取決於您是否可以靜態訪問ConfigurationResource.Version。如果是這樣,你可以使用靜態構造函數來初始化MAASource

public static List<MadjType> MAASource { get; set; } 

static MyClass(){ 
    if (ConfigurationResource.Version == "Version1") 
    { 
     //return values for Version1 
    } 
    if (ConfigurationResource.Version == "Version2") 
    { 
     //return values for Version2 
    } 
} 
1

你可以在靜態構造函數初始化值。但是這要求版本在靜態環境中也是可用的。

public static List<MadjType> MAASource { get; private set; } 

static MyClass() 
{ 
    switch (ConfigurationResource.Version) 
    { 
     case "Version1": 
      MAASource = new List<MadjType> 
       { 
        new MadjType { Id = 1, Name = "MAA - 1" }, 
        new MadjType { Id = 2, Name = "MAA - 2" }, 
        new MadjType { Id = 3, Name = "MAA - 3" }, 
        new MadjType { Id = 4, Name = "MAA - 4" }, 
        new MadjType { Id = 5, Name = "MAA - 5" }, 
        new MadjType { Id = 6, Name = "MAA - 6" }, 
        new MadjType { Id = 7, Name = "MAA - 7" }, 
        new MadjType { Id = 8, Name = "MAA - 8" }, 
        new MadjType { Id = 9, Name = "MAA - 9" }, 
        new MadjType { Id = 10, Name = "MAA - 10" }, 
       }; 
      break; 

     case "Version2": 
      MAASource = new List<MadjType> 
       { 
        new MadjType { Id = 1, Name = "MAA - 1" }, 
        new MadjType { Id = 2, Name = "MAA - 2" }, 
        new MadjType { Id = 3, Name = "MAA - 3" }, 
        new MadjType { Id = 4, Name = "MAA - 4" }, 
        new MadjType { Id = 5, Name = "MAA - 5" }, 
        new MadjType { Id = 6, Name = "MAA - 6" }, 
        new MadjType { Id = 7, Name = "MAA - 7" }, 
       }; 
      break; 
    } 
} 

而且你可以只創建列表和添加根據版本的項目,而不是case語句中定義整個集合。