Мой вопрос лучше всего иллюстрируется примером.Связывание дополнительной информации с .NET Enum
Предположим, у меня есть перечисление:
public enum ArrowDirection
{
North,
South,
East,
West
}
Я хочу, чтобы связать единичный вектор, соответствующий каждому направлению с этим направлением. Например, я хочу что-то, что вернет (0, 1) для North, (-1, 0) для West и т. Д. Я знаю, что в Java вы можете объявить метод внутри перечисления, который мог бы обеспечить эту функциональность.
Мое текущее решение состоит в том, чтобы иметь статический метод - внутри класса, который определяет перечисление, - который возвращает вектор, соответствующий переданному в ArrowDirection (метод использует HashTable для выполнения поиска, но это не очень важно) , Это кажется ... нечистым.
Вопрос:
Есть ли лучшее решение для хранения дополнительной информации, соответствующей перечислению в .NET?
Это довольно круто. Хотя я знал о расширениях, я никогда не думал использовать их для расширения enum. –
Да, я либо поначалу. Об этом рассказал мне друг. Очень мило. Я также был удивлен, узнав (недавно, здесь, на SO), что вы можете вызвать метод расширения по нулевому значению. Он по-прежнему работает, потому что это статический метод. Как обычно, команда C# отлично поработала над этими функциями. –
Вы получите принятый ответ. Я попробовал, и он работает отлично. Единственное. Где именно я должен объявить перечисление? Если я оставлю это в классе, он говорит, что он менее доступен. Мне пришлось создать класс ClassName_Enums, чтобы он работал ... – colithium