Nie jest to coś po wyjęciu z pudełka, ale można tworzyć proste mapowanie się między comparsion i comparer:
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 }
}
A kiedy w historii trzeba prawidłowego porównywarka:
var invariantComparer = comparsionToComparer[StringComparsion.InvariantCulture];
Edit:
z C# składni -6 słownik 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
};
Również Jons answer odnosi się do kwestii gwinty bieżącym-kultury, którą odrzucono, a powinno być prawdopodobnie uwzględniona
Dziękuję za pokazanie, że "dynamiczne mapowanie" jest użyteczne tam, gdzie kultura może się zmienić. Być może rozumiem też, dlaczego to nie jest tak proste, że .NET zaoferuje to po wyjęciu z pudełka. – miroxlav