2016-01-07 3 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"}, 
    }; 

И у меня есть файл ресурсов, который говорит мне, что ли я строить для Version1 или Version2 (я использую это как условно для других частей раствора, таких как

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

).

Так, Version2, я не хочу, чтобы добавить последние несколько пунктов на этом статическом списке, так что это означает:

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

не должны быть включены в MAASource, когда я использую Version2, как заявлено на файл ресурсов.

Есть ли способ, которым я могу это сделать для этого статического списка?

+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; 
    } 
} 

И вы могли бы просто создать список и добавлять элементы в зависимости от версии, а не определять весь набор в ППР случае.

Смежные вопросы