我目前正在编写一段代码,确定一个字段(所有Type
的{{1}}和Value
,因此我们可以查找特定枚举的翻译。我知道这是相当昂贵的,但是我看不到更好的解决方案。谁知道更合适?
我正在使用自动映射器进行映射。
enum
真的很想知道哪种方法更好。
答案 0 :(得分:1)
您可以使该方法在enum
类型上通用,从而可以按原样传递enum
值。
这使得可以通过enum
来检索typeof(T)
类型,该类型在编译时发生,而selectedEnum.GetType()
在运行时发生。
您必须分析这是否会提高性能。
从C# 7.3
开始,您甚至可以使用通用的Enum
约束来保护enum
值作为参数传递;例如。
where T : Enum
通过以下方式调用以下方法
ResolveEnumTranslation(detail, context, car.GearType)
private string ResolveEnumTranslation<T>(
CarDetail carDetail, ResolutionContext context, T selectedEnum
) where T : Enum
{
var typeName = typeof(T).Name;
if (context.Items.TryGetValue(localeKey, out var locale) && locale is string localeString)
{
return carDetail.Country.Translations
.FirstOrDefault(t =>
t.EnumType == typeName
&& t.EnumValue == Convert.ToInt32(selectedEnum)
&& string.Equals(t.CountryLocale?.Locale, localeString, StringComparison.OrdinalIgnoreCase)
)?.TranslatedValue ?? selectedEnum.ToString();
}
return selectedEnum.ToString();
}