В Python я могу использовать декораторы для отслеживания вызова функции, ее переменных и возвращаемых значений.
Его очень легко использовать.
Мне просто интересно, может ли C# сделать то же самое?
Я обнаружил, что в Интернете есть образец кода атрибута CallTracing.
Однако он не дал ожидаемого результата.
Да Атрибуты C# имеют схожую концепцию с декоратором Python?
[AttributeUsage(AttributeTargets.Method | AttributeTargets.ReturnValue |
AttributeTargets.Property, AllowMultiple = false)]
public class CallTracingAttribute : Attribute
{
public CallTracingAttribute()
{
try
{
StackTrace stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
Trace.TraceInformation("{0}->{1} {2}:{3}",
stackFrame.GetMethod().ReflectedType.Name,
stackFrame.GetMethod().Name,
stackFrame.GetFileName(),
stackFrame.GetFileLineNumber());
Debug.WriteLine(string.Format("{0}->{1} {2}:{3}",
stackFrame.GetMethod().ReflectedType.Name,
stackFrame.GetMethod().Name,
stackFrame.GetFileName(),
stackFrame.GetFileLineNumber()));
}
catch
{
}
}
}
class Program
{
[CallTracing]
static int Test(int a)
{
return 0;
}
[CallTracing]
static void Main(string[] args)
{
Test(1);
}
}
Подробнее здесь: https://stackoverflow.com/questions/398 ... turn-value