Как получить значение атрибута для сборки в Сесиле

Есть ли способ получить str1 в коде?

[MyAttribute("str1")]
class X {}

Экземпляр Mono.Cecil.CustomAttribute.Fields пуст.

Ответ 1

При использовании атрибутов в .NET вы либо используете параметры конструктора, либо устанавливаете некоторые (именованные) поля. Это кодируется по-разному в метаданных и заканчивается отдельно в Cecil.

экземпляр Mono.Cecil.CustomAttribute.Fields пуст

То, что вы используете, ищет поля, когда для настраиваемого атрибута были использованы аргументы конструктора . Итак, вы ищете:

type.CustomAttributes[0].ConstructorArguments[0].Value