2010-04-27 3 views
3

У меня есть перечисление, которое я закодировал сегодня. Каковы возможные способы расширения его функциональности или, возможно, добавления к ней дополнительных переменных позднее? Будет ли частичное перечисление делать трюк?Расширение функциональности в Enum

ответ

5

Это действительно зависит от того, кто использует перечисление. Если это всего лишь ваш собственный код, вы можете добавить к нему дополнительные значения без каких-либо побочных эффектов, так как в идеале уже будет явно проверять ожидаемые значения. Как правило, довольно легко отслеживать любые места, требующие редактирования.

Это становится более сложным, если enum был выпущен для других людей, чтобы потреблять как часть API; например, если вы добавите «MyNewValue» в перечисление, используемое при возврате веб-метода, что может привести к сбою существующих клиентов (которые еще не были обновлены), когда вы отправляете их это значение - либо через код, а не зная, что делать, или (более немедленно) с помощью слоя сериализации, паника, когда он видит строку, которую он не ожидал.

Нет такой вещи, как partial enum; только class, struct или interface.

+0

так как это, если он был выпущен как API? – Soham

+1

@ Сохам - с большой осторожностью. Конечно, вы можете перестраивать и передислоцировать dll, но это может иметь последствия. –

+1

@Soham: Если вы пишете библиотеку многократного использования, ознакомьтесь с Руководством по разработке рамок (http://www.amazon.com/dp/0321545613). Книга содержит 13 страниц, посвященных проектированию перечислений (п. 4.8). Марк абсолютно прав относительно риска совместимости добавления значений в перечисления. ФДГ говорит об этом: _ «СЧИТАЕТ, добавляя значения в перечисления, несмотря на небольшой риск совместимости». _ – Steven

Смежные вопросы