C# 是否在运行时打开/关闭Postsharp跟踪?

C# 是否在运行时打开/关闭Postsharp跟踪?,c#,trace,postsharp,C#,Trace,Postsharp,谁能告诉我,如果在PostSharp中,我可以在运行时打开/关闭跟踪?我需要写更少的代码,所以最近我可以简单地删除它。暂时需要跟踪功能 也许有一种替代PostSharp的运行时开/关功能 更新1:我想出了一个主意,但我不知道它是否好。这里有一个例子 public class Smth { private long i = 0; [TraceAttribute] public void Execute() {

谁能告诉我,如果在PostSharp中,我可以在运行时打开/关闭跟踪?我需要写更少的代码,所以最近我可以简单地删除它。暂时需要跟踪功能

也许有一种替代PostSharp的运行时开/关功能

更新1:我想出了一个主意,但我不知道它是否好。这里有一个例子

    public class Smth
    {
        private long i = 0;

        [TraceAttribute]
        public void Execute()
        {
            Console.WriteLine("Execute call" + i++);
            Thread.Sleep(200);
        }
    }

    [Serializable]
    public class TraceAttribute : OnMethodBoundaryAspect
    {
        public override void OnEntry(MethodExecutionArgs args)
        {
            if(Manager.IsEnabled)
            {
                Console.WriteLine();
                Console.WriteLine(string.Format("Entering {0}", args.Method.Name));
            }
        }

        public override void OnExit(MethodExecutionArgs args)
        {
            if(Manager.IsEnabled)
            {
                Console.WriteLine(string.Format("Leaving {0}", args.Method.Name));
                Console.WriteLine();
            }
        }
    }

    public static class Manager
    {
        public static bool IsEnabled { get; set; }

        static Manager()
        {
               IsEnabled = true;
        }
    }
通过更改IsEnabled属性,我可以打开/关闭跟踪。。。 还有其他建议吗?

你的建议很好(只要是暂时的)。使用多播轻松应用方面。见我的文章和


免责声明:我假设OP希望在不重建的情况下执行此操作,因为他说运行时,这让我相信他需要配置设置。否则我会建议一条完全不同的路线

你说的临时路线是什么意思?如果要创建用于跟踪的方面,可以使用多播(1行代码)应用它,然后在完成后将其删除。如果您想通过配置对其进行配置,那么只需将方面设置为使用配置即可。为什么不使用.net内置跟踪?我需要为很多方法制作跟踪日志,所以我选择了PostSharp,但我还需要具备运行时开/关功能。此跟踪日志是临时功能,稍后将被删除->因此我不想将其集成到我的程序->因此以后很容易删除它您是否尝试在单个生产版本中启用/禁用跟踪?或者有能力在构建之间切换。@JasonCoyne我假设没有重构,因为他说运行时,这让我相信配置设置。否则我会走一条完全不同的路。