相关疑难解决方法(0)

[Flags]枚举属性在C#中意味着什么?

我不时会看到如下的枚举:

[Flags]
public enum Options 
{
    None    = 0,
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option4 = 8
}
Run Code Online (Sandbox Code Playgroud)

我不明白[Flags]-attribute 到底是做什么的.

任何人都可以发布一个很好的解释或示例?

c# enums flags

1383
推荐指数
12
解决办法
46万
查看次数

如何在C#中使用本地化

我似乎无法让本地化工作.

我有一个类库.现在我想在那里创建resx文件,并根据线程文化返回一些值.

我怎样才能做到这一点?

c# localization cultureinfo

256
推荐指数
5
解决办法
19万
查看次数

将枚举值与本地化字符串资源相链接

相关: 从枚举属性获取枚举

我希望以最可维护的方式绑定枚举,并将它与关联的本地化字符串值相关联.

如果我把枚举和类放在同一个文件中,我觉得有些安全,但我必须假设有更好的方法.我还考虑过将枚举名称与资源字符串名称相同,但我担心我不能总是在这里强制执行.

using CR = AcmeCorp.Properties.Resources;

public enum SourceFilterOption
{
    LastNumberOccurences,
    LastNumberWeeks,
    DateRange
    // if you add to this you must update FilterOptions.GetString
}

public class FilterOptions
{
    public Dictionary<SourceFilterOption, String> GetEnumWithResourceString()
    {
        var dict = new Dictionary<SourceFilterOption, String>();
        foreach (SourceFilterOption filter in Enum.GetValues(typeof(SourceFilterOption)))
        {
            dict.Add(filter, GetString(filter));
        }
        return dict;
    }

    public String GetString(SourceFilterOption option)
    {
        switch (option)
        {
            case SourceFilterOption.LastNumberOccurences:
                return CR.LAST_NUMBER_OF_OCCURANCES;
            case SourceFilterOption.LastNumberWeeks:
                return CR.LAST_NUMBER_OF_WEEKS;
            case SourceFilterOption.DateRange:
            default:
                return CR.DATE_RANGE;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# enums encapsulation

6
推荐指数
1
解决办法
9865
查看次数

本地化枚举就像扩展方法一样

我在我的自定义枚举类型上创建了一个扩展方法

public static class GetLocEnum
{
    private static string Translate(this MyEnum e, int lang)
    {
        string res = string.Empty;
        if (lang == 1) 
        {
            switch (e)
            {
                case MyEnum.OptionOne:
                    res = "some title";
                    break;
                case MyEnum.OptionTwo:
                    res = "some title 2";
                    break;
                case MyEnum.OptionThree:
                    res = "some title 3";
                    break;
            }
        }
       // more if's ...
       return res;
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我现在无法将其用作扩展MyEnum.Translate()

.net c#

1
推荐指数
1
解决办法
80
查看次数

标签 统计

c# ×4

.net ×2

enums ×2

cultureinfo ×1

encapsulation ×1

flags ×1

localization ×1