Создать несколько атрибутов?

2

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

    [MyAttr(4, @"a"),
     MyAttr(41, "b"),
     MyAttr(45, "ab")]

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

MyAttr2(4, 41, "a", "b"); //4+41=45, "a"+"b" = "ab"

Как я могу сгенерировать 3 MyAttr для применения к классу с помощью MyAttr2?

  • 0
    Вы имеете в виду один и тот же атрибут с разными конструкторами?
  • 0
    Нет, я имею в виду, что код будет смотреть на MyAttr, и есть 3 различные инструкции, и я хочу сгенерировать 3 без добавления логики, чтобы проверить MyAttr2 и повторить 3 инструкции.
Показать ещё 2 комментария
Теги:
attributes
custom-attributes

1 ответ

1
Лучший ответ

Компилятор С# не может преобразовать запись одного атрибута в несколько в метаданных сборки. Однако вы можете смоделировать свой атрибут таким образом, чтобы он предоставлял дополнительную информацию об атрибутах в качестве свойств (или коллекции). Однако дочерняя информация не будет доступна напрямую через отражение в качестве независимых атрибутов.

  • 0
    Хм, так что мне нужно изменить логику кода для MyAttr? Или я могу оставить это в покое и сделать то, что вы предлагаете, с ограничением детской информации, которая недоступна напрямую?
  • 0
    Если вы сделаете детали частью одного атрибута, доступного через некоторые коллекции / свойства, вам придется изменить существующий код. Трудно сказать, какой дизайн лучше соответствует вашим потребностям, без подробностей о том, что вы делаете, и в скольких случаях вы могли бы объединить несколько атрибутов. Однако подход с использованием дочерних атрибутов был бы серьезным изменением.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню