Я думаю, вы ищете то, что называется Аспектно-ориентированным программированием.Есть много библиотек C #, чтобы помочь с этим.Один из них называется PostSharp (бесплатная версия PostSharp поддерживает эту функцию).Вот пример, похожий на пример лося.Это создает атрибут Trace, который вы можете использовать в других методах для добавления этой дополнительной функциональности:
[Serializable]
public class TraceAttribute : OnMethodBoundaryAspect
{
public override void OnEntry( MethodExecutionArgs args )
{
Trace.WriteLine("about to call method");
}
public override void OnExit(MethodExecutionArgs args)
{
Trace.WriteLine("just finished calling method");
}
}
Вы бы добавили его в метод "Foo", поместив атрибут Trace прямо перед ним:1007 *
Теперь, когда Foo выполняется, вышеупомянутый метод OnEntry будет запущен перед ним, а OnExit будет запущен сразу после.