有什么简单的方法可以对c#开关的case语句进行排序吗
本文关键字:语句 case 排序 开关 简单 什么 方法 | 更新日期: 2023-09-27 18:21:25
我正在寻找一种自动排序大量事例的方法。
switch (id) {
case RadGridStringId.ClearSortingMenuItem: return "Annuler les tris";
case RadGridStringId.ConditionalFormattingMenuItem: return "Formatage conditionnel";
case RadGridStringId.GroupByThisColumnMenuItem: return "Grouper par cette colonne";
case RadGridStringId.UngroupThisColumn: return "Dégrouper cette colonne";
case RadGridStringId.ColumnChooserMenuItem: return "Masqueur de colonnes";
case RadGridStringId.HideMenuItem: return "Masquer cette colonne";
case RadGridStringId.ConditionalFormattingBtnApply: return "Appliquer";
case RadGridStringId.ColumnChooserFormCaption: return "Masqueur de colonnes";
case RadGridStringId.ColumnChooserFormMessage: return "Ajouter ici une colonne'npour la faire disparaitre'ntemporairement de la vue";
case RadGridStringId.GroupingPanelDefaultMessage: return "Ajouter ici une colonne pour faire un regroupement par cette colonne";
case RadGridStringId.GroupingPanelHeader: return "Groupe par";
case RadGridStringId.ClearValueMenuItem: return "Effacer la Valeur";
case RadGridStringId.ConditionalFormattingContains: return "Contient [Valeur1]";
case RadGridStringId.ConditionalFormattingDoesNotContain: return "Ne contient pas [Valeur1]";
case RadGridStringId.ConditionalFormattingEndsWith: return "Finit par [Valeur1]";
case RadGridStringId.ConditionalFormattingEqualsTo: return "Est égal à [Valeur1]";
case RadGridStringId.ConditionalFormattingIsBetween: return "Est compris entre [Valeur1] et [Valeur2]";
case RadGridStringId.ConditionalFormattingIsGreaterThan: return "Est supérieur à [Valeur1]";
case RadGridStringId.ConditionalFormattingIsGreaterThanOrEqual: return "Est supérieur ou égal à [Valeur1]";
case RadGridStringId.ConditionalFormattingIsLessThan: return "Est inférieur à [Valeur1]";
case RadGridStringId.ConditionalFormattingIsLessThanOrEqual: return "Est inférieur ou égal à [Valeur1]";
case RadGridStringId.ConditionalFormattingIsNotBetween: return "Non compris entre [Valeur1] et [Valeur2]";
case RadGridStringId.ConditionalFormattingIsNotEqualTo: return "Est différent de [Valeur1]";
case RadGridStringId.ConditionalFormattingStartsWith: return "Commence par [Valeur1]";
case RadGridStringId.ConditionalFormattingRuleAppliesOn: return "La règle s'applique au champ:";
case RadGridStringId.ConditionalFormattingChooseOne: return "[Choisir un type]";
case RadGridStringId.NoDataText: return "Pas de données à afficher";
default:
return base.GetLocalizedString(id);
}
有人知道Visual Studio 2013/2015中的工具、插件或扩展吗?
2015-11-12更新
其他信息:这对我来说只是一个设计时的问题。我正在使用Telerik控件。不幸的是,这些控件没有提供任何开箱即用的控件翻译。它们只提供了一种翻译机制。
我可以在网上找到不同语言的不同文件(例如这里)。但它们是不完整的,这些文件中案件陈述的顺序也不同。
要查看这些文件中的差异,排序的switch语句会让生活变得更轻松:)
附言:一个额外的功能是扩展当前丢失/未使用枚举值的切换。
谨致问候,Daniel
如注释中所述,您可以简单地将行复制到Excel中,按字母顺序对行进行排序,然后将它们粘贴回代码中。然而,这个大的switch
语句以后维护起来会很麻烦。你应该考虑另一种方法,比如使用Dictionary
。
在下面的代码中,创建了一个包含所有文本的字典
private static Dictionary<RadGridStringId, string> texts;
private static void InitializeTexts()
{
texts = new Dictionary<RadGridStringId, string>();
texts[RadGridStringId.ClearSortingMenuItem] = "Annuler les tris";
texts[RadGridStringId.ConditionalFormattingMenuItem] = "Formatage conditionnel";
texts[RadGridStringId.GroupByThisColumnMenuItem] = "Grouper par cette colonne";
texts[RadGridStringId.UngroupThisColumn] = "Dégrouper cette colonne";
texts[RadGridStringId.ColumnChooserMenuItem] = "Masqueur de colonnes";
texts[RadGridStringId.HideMenuItem] = "Masquer cette colonne";
texts[RadGridStringId.ConditionalFormattingBtnApply] = "Appliquer";
texts[RadGridStringId.ColumnChooserFormCaption] = "Masqueur de colonnes";
texts[RadGridStringId.ColumnChooserFormMessage] =
"Ajouter ici une colonne'npour la faire disparaitre'ntemporairement de la vue";
texts[RadGridStringId.GroupingPanelDefaultMessage] =
"Ajouter ici une colonne pour faire un regroupement par cette colonne";
texts[RadGridStringId.GroupingPanelHeader] = "Groupe par";
texts[RadGridStringId.ClearValueMenuItem] = "Effacer la Valeur";
texts[RadGridStringId.ConditionalFormattingContains] = "Contient [Valeur1]";
texts[RadGridStringId.ConditionalFormattingDoesNotContain] = "Ne contient pas [Valeur1]";
texts[RadGridStringId.ConditionalFormattingEndsWith] = "Finit par [Valeur1]";
texts[RadGridStringId.ConditionalFormattingEqualsTo] = "Est égal à [Valeur1]";
texts[RadGridStringId.ConditionalFormattingIsBetween] = "Est compris entre [Valeur1] et [Valeur2]";
texts[RadGridStringId.ConditionalFormattingIsGreaterThan] = "Est supérieur à [Valeur1]";
texts[RadGridStringId.ConditionalFormattingIsGreaterThanOrEqual] = "Est supérieur ou égal à [Valeur1]";
texts[RadGridStringId.ConditionalFormattingIsLessThan] = "Est inférieur à [Valeur1]";
texts[RadGridStringId.ConditionalFormattingIsLessThanOrEqual] = "Est inférieur ou égal à [Valeur1]";
texts[RadGridStringId.ConditionalFormattingIsNotBetween] = "Non compris entre [Valeur1] et [Valeur2]";
texts[RadGridStringId.ConditionalFormattingIsNotEqualTo] = "Est différent de [Valeur1]";
texts[RadGridStringId.ConditionalFormattingStartsWith] = "Commence par [Valeur1]";
texts[RadGridStringId.ConditionalFormattingRuleAppliesOn] = "La règle s'applique au champ:";
texts[RadGridStringId.ConditionalFormattingChooseOne] = "[Choisir un type]";
texts[RadGridStringId.NoDataText] = "Pas de données à afficher";
}
一个简单的getter,它初始化字典(如果还没有),并返回字符串。
private static string getText(RadGridStringId id)
{
if (texts == null)
{
InitializeTexts();
}
if (texts.ContainsKey(id))
{
return texts[id];
}
else
{
return string.Empty; // or base.GetLocalizedString(id);
}
}
然后你只需使用方法:
private static void Main(string[] args)
{
RadGridStringId id = RadGridStringId.GroupingPanelHeader;
string test = getText(id);
Console.WriteLine(test); //prints: "Groupe par"
}