Вы можете добавить члена к MyResourceCustom
, который оборачивает Description, DefaultValue и MyCustomAttribute в неизменяемый экземпляр (может быть, даже статический глобальный, если он может быть одинаковым для всех).
public class MyResourceCustom : Attribute {
public MyResourceCustomDescriptor Descriptor { get; private set; }
public MyResourceCustom(MyResourceCustomDescriptor descriptor)
: base() {
Descriptor = descriptor;
}
public class MyResourceCustomDescriptor {
public string Description { get; private set; }
public bool DefaultValue { get; private set; }
public ParameterGroups ParameterGroup { get; private set; }
public MyResourceCustomDescriptor(string path) {
// read from path
}
}
public class MyAdvancedResouceCustomDescriptor : MyResourceCustomDescriptor {
public string DisplayName { get; private set; }
// etc...
}
При получении атрибута вы можете получить его свойство Descriptor
и прочитать значения.
Как звание, вы должны назвать его IsDefaultValue
.