静态列表声明的条件
本文关键字:条件 声明 列表 静态 | 更新日期: 2023-09-27 18:29:29
例如,我有一个类的静态列表:
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
}
)。
所以,对于Version2,我不想在这个静态列表中添加最后几项,所以这意味着:
new MadjType{Id = 8, Name = "MAA - 8"},
new MadjType{Id = 9, Name="MAA - 9"},
new MadjType{Id = 10, Name= "MAA - 10"},
当我使用资源文件上声明的Version2时,不应包含在MAASource中。
有什么方法可以为这个静态列表做到这一点吗?
这取决于您是否可以静态访问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
}
}
您可以在静态构造函数中初始化值。但这需要Version在静态上下文中也可用。
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语句中定义整个集合。