4

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 プロパティを変更することで、トレースのオン/オフを切り替えることができました...他に提案はありますか?

4

1 に答える 1

1

あなたが持っているものは問題ありません(一時的なものである限り)。マルチキャストを使用してアスペクトを簡単に適用します。私の記事を参照してください http://www.sharpcrafters.com/blog/post/Day-2-Applying-Aspects-with-Multicasting-Part-1.aspxおよびhttp://www.sharpcrafters.com/blog/post/Day -3-Applying-Aspects-with-Multicasting-Part-2.aspx

免責事項:OPはランタイムを言ったので、再構築せずにこれをやりたいと思っていると思います。これにより、構成設定が必要だと思います。それ以外の場合は、はるかに異なるルートをお勧めします

于 2012-06-13T14:42:12.543 に答える