Non c'è qualcosa fuori dalla scatola, ma è possibile creare un semplice mappatura te tra il comparsion e l'operatore di confronto:
Dictionary<StringComparison, StringComparer> comparsionToComparer =
new Dictionary<StringComparison, System.StringComparer>
{
{ StringComparison.CurrentCulture, StringComparer.CurrentCulture },
{ StringComparison.CurrentCultureIgnoreCase, StringComparer.CurrentCultureIgnoreCase },
{ StringComparison.InvariantCulture, StringComparer.InvariantCulture },
{ StringComparison.InvariantCultureIgnoreCase, StringComparer.InvariantCultureIgnoreCase },
{ StringComparison.Ordinal, StringComparer.Ordinal },
{ StringComparison.OrdinalIgnoreCase, StringComparer.OrdinalIgnoreCase }
}
E quando mai è necessario il corretto di confronto:
var invariantComparer = comparsionToComparer[StringComparsion.InvariantCulture];
Edit:
Con C# sintassi -6 Dizionario Initializer:
Dictionary<StringComparison, StringComparer> comparsionToComparer =
new Dictionary<StringComparison, System.StringComparer>
{
[StringComparison.CurrentCulture] = StringComparer.CurrentCulture,
[StringComparison.CurrentCultureIgnoreCase] = StringComparer.CurrentCultureIgnoreCase,
[StringComparison.InvariantCulture] = StringComparer.InvariantCulture,
[StringComparison.InvariantCultureIgnoreCase] = StringComparer.InvariantCultureIgnoreCase,
[StringComparison.Ordinal] = StringComparer.Ordinal,
[StringComparison.OrdinalIgnoreCase] = StringComparer.OrdinalIgnoreCase
};
Inoltre, Jons answer si riferisce alla questione del thread corrente-cultura, che ho scartato e dovrebbe probabilmente essere prese in considerazione
fonte
2015-09-24 14:34:16
Grazie per aver dimostrato che "la mappatura dinamica" è utile laddove è probabile che la cultura cambi. Forse capisco anche perché la cosa non sia così semplice che .NET possa offrirlo fuori dagli schemi. – miroxlav