枚举的资源查找

时间:2012-03-05 21:25:22

标签: c# asp.net-mvc resources enums

public enum WeightGoalStatus
{
    InProgress,
    Failed,
    Succeded
}

public static class WeightGoalStatusExtensions
{
    public static string ToLocalizedString(this WeightGoalStatus status)
    {
        return "Localizedstring";//should be code that queries a resource based on the value of the enum
    }
}

这可能吗? 也。好主意? 它基本上是一个剃刀视图,我需要这个资源lookup.cant向用户显示“INProgress”。

4 个答案:

答案 0 :(得分:2)

易。我们实际上正是这样做的。

public static class WeightGoalStatusExtensions
{
    public static string ToLocalizedString(this WeightGoalStatus status)
    {
        switch (status)
        {
           case WeightGoalStatus.InProgress
              return Resources.WeightGoalStatus.InProgress_ToLocalizedString;
           // others
        }
    }
}

像往常一样创建资源文件,确保将CustomTool设置为ResXFileCodeGenerator。

另外,请确保正确设置文化信息。

答案 1 :(得分:1)

您可以尝试使用TypeConverter。完整示例here

答案 2 :(得分:0)

这会有效,我会考虑这个干净的代码。

替代方法:使用“Enums.WeightGoalStatus.InProgress”等密钥创建资源文件,并使用动态密钥在该资源文件中查找值。这将为您节省一些代码。您也可以使用静态字典,尽管现有的资源基础设施非常好。

答案 3 :(得分:0)

您可以通过简单地执行以下操作来避免扩展类

ResourceManager rm = new ResourceManager(“ApplicationName.App_LocalResources.Enums”,Assembly.GetExecutingAssembly());

string LangEnum = rm.GetString(e_Audits.ToString());