Сесил - Получение свойств определенных атрибутов - PullRequest
2 голосов
/ 07 августа 2009

Я использую Сесил, чтобы попытаться прочитать свойства моих атрибутов:

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public sealed class TraceMethodAttribute : Attribute {
    public TraceMethodAttribute() {
        MethodStart = true;
        MethodReturn = true;
        MethodMessages = true;
    }

    public bool MethodStart { get; set; }
    public bool MethodReturn { get; set; }
    public bool MethodMessages { get; set; }
}

[TraceMethod(MethodMessages = false)]
static void Main(string[] args) {
}

...

if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {         
  if ((bool)attribute.Fields["MethodMessages"] == true) {
        EditMethodStart(assembly, method);
  }

Это, я хотел бы, чтобы последний блок кода проверял всякий раз, когда атрибут, примененный к Main, например, имеет MethodMessages, установленный в true или false. Из того, что я видел, похоже, что attribute.Fields.Count и attribute.Properties.Count имеет значение 0. Почему это так?

Спасибо

1 Ответ

2 голосов
/ 04 февраля 2010

Должно работать нормально при доступе к коллекции свойств по индексатору.

if (attribute.Constructor.DeclaringType.FullName == typeof(TraceMethodAttribute).FullName) {         
  if ((bool)attribute.Properties["MethodMessages"] == true) {
        EditMethodStart(assembly, method);
  }

Просто скомпилировал и проверил.

...