Согласно руководству, опубликованному в Новые рекомендации по использованию строк в Microsoft .NET 2.0 , данные в строке могут демонстрировать один из следующих типов поведения:
- Нелингвистический идентификатор, где байты точно совпадают.
- Нелингвистический идентификатор, где регистр не имеет значения, особенно часть данных, хранящихся в большинстве системных служб Microsoft Windows.
- Культурно-независимые данные, которые по-прежнему актуальны с лингвистической точки зрения.
- Данные, которые требуют местных лингвистических обычаев.
Учитывая это, я хотел бы знать, как лучше всего сообщить, какое поведение ожидается от строкового параметра в общедоступном API. Я не смог найти ответ в Руководстве по проектированию фреймворка .
Рассмотрим следующие методы:
f(string this_is_a_linguistic_string)
g(string this_is_a_symbolic_identifier_so_use_ordinal_compares)
Лучшее, что я могу сделать для именования переменных и документации XML? Могу ли я каким-либо образом использовать атрибуты, чтобы пометить требования строки?
Теперь рассмотрим следующий случай:
h(Dictionary<string, object> dictionary)
Обратите внимание, что экземпляр словаря создается вызывающей стороной. Как мне сообщить, что вызываемый объект ожидает, что объект IEqualityComparer , содержащийся в словаре, выполнит, например, сравнение регистра без учета регистра?