C# 是否在运行时打开/关闭Postsharp跟踪?
谁能告诉我,如果在PostSharp中,我可以在运行时打开/关闭跟踪?我需要写更少的代码,所以最近我可以简单地删除它。暂时需要跟踪功能 也许有一种替代PostSharp的运行时开/关功能 更新1:我想出了一个主意,但我不知道它是否好。这里有一个例子C# 是否在运行时打开/关闭Postsharp跟踪?,c#,trace,postsharp,C#,Trace,Postsharp,谁能告诉我,如果在PostSharp中,我可以在运行时打开/关闭跟踪?我需要写更少的代码,所以最近我可以简单地删除它。暂时需要跟踪功能 也许有一种替代PostSharp的运行时开/关功能 更新1:我想出了一个主意,但我不知道它是否好。这里有一个例子 public class Smth { private long i = 0; [TraceAttribute] public void Execute() {
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我假设没有重构,因为他说运行时,这让我相信配置设置。否则我会走一条完全不同的路。