Ответ 1
При использовании атрибутов в .NET вы либо используете параметры конструктора, либо устанавливаете некоторые (именованные) поля. Это кодируется по-разному в метаданных и заканчивается отдельно в Cecil.
экземпляр Mono.Cecil.CustomAttribute.Fields пуст
То, что вы используете, ищет поля, когда для настраиваемого атрибута были использованы аргументы конструктора . Итак, вы ищете:
type.CustomAttributes[0].ConstructorArguments[0].Value