Можно ли дать перечисления свойств? - PullRequest
0 голосов
/ 08 марта 2020

Я знаю, что вы можете дать им методы, создав метод расширения для другого класса, но возможны ли свойства? Насколько мне известно, лучше всего использовать метод расширения, который принимает нулевые параметры.

Если вам интересно, почему я спрашиваю об этом, у меня есть перечисление с некоторыми пользовательскими атрибутами:

enum Operator : byte
{
    [Category(OperatorCategory.Multiplicative), Symbol("")      ] None,
    [Category(OperatorCategory.Additive),       Symbol("+")     ] Add,
    [Category(OperatorCategory.Additive),       Symbol("\u2212")] Subtract,
    [Category(OperatorCategory.Multiplicative), Symbol("\u22C5")] Multiply,
    [Category(OperatorCategory.Multiplicative), Symbol("\u00F7")] Divide,
    [Category(OperatorCategory.Exponential),    Symbol("^")     ] Exponent,
    [Category(OperatorCategory.Exponential),    Symbol("\u221A")] Root,
    [Category(OperatorCategory.Exponential),    Symbol("log")   ] Logarithm
}

Я хочу сделать очень простую вещь: добавить свойство .Category, которое возвращает категорию оператора (чтобы мне не приходилось вводить одно и то же снова).

Ответы [ 2 ]

1 голос
/ 08 марта 2020

Взгляните на эту статью, она может дать вам некоторое представление о том, что вы хотите:

Использование классов перечисления вместо типов перечисления

Я не пробовал это, я просто думал, что это выглядит актуально. Моим предложением было создать класс, который содержит список ваших свойств, а затем можно использовать целочисленный индекс перечисления, а не байт, который вы использовали, для извлечения нужного значения свойства на основе значения перечисления.

0 голосов
/ 19 марта 2020

Мне нравятся Java перечисления, и я хотел дублировать их (насколько это возможно) в C#. Пожалуйста, проверьте это, это близко: Расширенное перечисление . Это перечисление допускает свойства, а также методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...