繁体   English   中英

有没有简单的方法来排序c#switch case语句?

[英]Is there any easy way of sorting c# switch case statements?

我正在寻找一种自动分类大量案件陈述的方法。

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控件。 不幸的是,此控件未提供其控件的任何现成翻译。 它们仅提供翻译机制

我可以在网上找到针对不同语言的不同文件( 例如,这里 )。 但是它们不完整,并且这些文件中case语句的顺序不同。

要查看这些文件中的差异,可以使用排序后的switch语句简化工作:)

PS:另一个不错的功能是扩展当前缺少/未使用的枚举值的切换的方法。

问候,丹尼尔

如注释中所述,您可以简单地将行复制到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"
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM