私の様相を修正禁止する様相を適用する:PostSharp - mscorlibが、私自身のクラスでのコール
[Serializable]
class DumbLogger : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
Log.Print("Entry: ") + args.Method.Name;
args.FlowBehavior = FlowBehavior.Continue;
}
}
これは私がmscorlib中のコールを変更するために使用して、私のクラスに変更されてからそれらを除外しようとしていますものです
0:私はILspy逆コンパイラと私のLOGクラスを見れば、私は方法は、例えば変更されている任意のクラスの@のMscorlib.dllに呼び出しを見ることができるのでLOG[assembly: MY_PROJECT.DumbLogger(
AttributeTargetTypes = "MY_PROJECT.Log",
AttributeExclude = true,
AttributePriority = 1)]
[assembly: MY_PROJECT.DumbLogger(
AttributeTargetAssemblies = "mscorlib",
AttributePriority = 2)]
しかし...このdoesntのは、トリックを行うと呼ばれます
私がこれをしたい理由は、Log.Printメソッドを入力するとstackoverflow例外が生成され、無限に自身を呼び出すためです。
私はすでに、mscorlibの文字列のような特定の名前空間とクラスを除外していることに気付いていますが、私が説明した方法でそれを行う理由があります。
Danielさん、ありがとうございました。私はこの回答をしばらく前に受けましたが、質問にはあまり関係がありませんでしたが、あまり「回避策」があると思っていました... –
@JoaoVitor現在、他の方法はありません。それは将来変更されるかもしれませんが、CallSiteLevelAspectのようなもののための計画はありません。 –