【问题标题】:Resource lookup for enums枚举的资源查找
【发布时间】:2012-03-05 21:25:21
【问题描述】:
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
    }
}

这可能吗? 还。好主意? 它基本上是为了一个剃刀视图,我需要这个资源查找。不能向用户显示“INProgress”。

【问题讨论】:

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


    【解决方案1】:

    简单。而我们实际上正是这样做的。

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

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

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

    【讨论】:

      【解决方案2】:

      您可以尝试使用TypeConverter。一个完整的例子here

      【讨论】:

      • ASP.NET MVC 不会使用这个,AFAIK。
      • 可能不是现成的,但您可以编写一个自定义的显示属性来挂钩。
      【解决方案3】:

      这行得通,我会考虑这个干净的代码。

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

      【讨论】:

      • 我的问题正是如何查询资源。请提供示例代码:)
      • 看来我理解错了。我认为您需要最佳实践建议。在 Google 上搜索“.net 资源文件”,可以找到很多关于如何查询资源的信息。
      【解决方案4】:

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

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

      字符串 LangEnum = rm.GetString(e_Audits.ToString());

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-01
        • 2013-05-29
        • 2018-10-02
        相关资源
        最近更新 更多