Как я могу принять «словарь» данных в качестве пользовательского параметра атрибута .NET?C#

Место общения программистов C#
Anonymous
Как я могу принять «словарь» данных в качестве пользовательского параметра атрибута .NET?

Сообщение Anonymous »

Недавно я обнаружил, что атрибут .NET может содержать только примитивные типы, строки, перечисления, объекты и массивы с одним параметром этих типов, как описано здесь.

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

Код: Выделить всё

// I want to do this, but can't because of the CLR limitation
[MyAttribute(Attributes = new Dictionary { { "visibility", "Condition1" }, { "myAttribute", "some-value" } })]
Я придумал два возможных варианта: использовать в объявлении XML или JSON (в виде строки в атрибуте .NET), которые можно легко сериализовать в IDictionary для моего приложения, но это превращает объявление в длинную строку, подверженную ошибкам, без проверки синтаксиса.

Код: Выделить всё

// XML
[MyAttribute(Attributes = "")]

// JSON
[MyAttribute(Attributes = "{ 'visibility': 'Condition1', 'myAttribute': 'some-value' }")]
Какие альтернативы, если таковые имеются, более элегантные/простые, чем эта?>

Вернуться в «C#»