gpt4 book ai didi

c# - 使用本地化枚举作为数据源

转载 作者:行者123 更新时间:2023-11-30 17:15:07 24 4
gpt4 key购买 nike

我的应用中有很多枚举。它们中的大多数用于这样的组合:

Enum.GetValues(typeof(TipoControlador))

现在我想像这样本地化它们:Localizing enum descriptions attributes

如何组合它们?我的第一个想法是用扩展方法覆盖 ToString 方法,但这是不可能的 =(

最佳答案

以另一篇文章为基础,您可以创建这样的扩展方法:

public static class LocalizedEnumExtensions
{
private static ResourceManager _resources = new ResourceManager("MyClass.myResources",
System.Reflection.Assembly.GetExecutingAssembly());

public static IEnumerable<string> GetLocalizedNames(this IEnumerable enumValues)
{
foreach(var e in enumValues)
{
string localizedDescription = _resources.GetString(String.Format("{0}.{1}", e.GetType(), e));
if(String.IsNullOrEmpty(localizedDescription))
{
yield return e.ToString();
}
else
{
yield return localizedDescription;
}
}
}
}

你会像这样使用它:

Enum.GetValues(typeof(TipoControlador)).GetLocalizedNames();

从技术上讲,此扩展方法将接受任何数组,并且您不能将其限制为仅适用于枚举,但如果您认为它很重要,则可以在扩展方法中添加额外的验证:

if(!e.GetType().IsEnum) throw new InvalidOperationException(String.Format("{0} is not a valid Enum!", e.GetType()));

关于c# - 使用本地化枚举作为数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8189388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com