静态列表声明的条件

本文关键字:条件 声明 列表 静态 | 更新日期: 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语句中定义整个集合。