Получить пользовательский атрибут из stacktraceC#

Место общения программистов C#
Ответить
Anonymous
 Получить пользовательский атрибут из stacktrace

Сообщение Anonymous »

Я создал специальный атрибут для этого метода, чтобы определить, был ли создан экземпляр для использования в качестве аргумента для определенного метода.
[System.AttributeUsage(System.AttributeTargets.Method)]
public class IAAttr: System.Attribute {
public string desc { get; }

public IAAttr(string t) => desc = t;
}

[IAAttr("instance_add")]
public void instance_add(params Object[] instances) {
//Do something...
}


[Конструктор объекта]
StackTrace st = new StackTrace();

for (int i=1; i 0) {

//if custom attribute exists, do not execute below

return;
}
}

Create();

Какой код мне следует написать для обнаружения пользовательских атрибутов в следующем кадре стека?
При выполнении функции с атрибутом создаются два пользовательских атрибута. обнаружены, и обнаружены следующие типы.
[0]{System.Diagnostics.DebuggerStepThroughAttribute
[1]{System.Diagnostics.DebuggerHiddenAttribute
Похоже, что оба настраиваемых атрибута создаются в процессе отладки.
все последующие попытки оказались неудачными,
st.GetFrame(i).GetMethod().
GetCustomAttributes(typeof(IAAttr), true).FirstOrDefault(); //->null

foreach (Attribute attr in st.GetFrame(i).GetMethod().GetCustomAttributes()) {

if ((Type)attr.TypeId == typeof(IAAttr)) {

//System.Diagnostics.DebuggerStepThroughAttribute
//System.Diagnostics.DebuggerHiddenAttribute
}
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... stacktrace
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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