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”。
答案 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());