我的方面:PostSharp - 應用方面MSCORLIB但禁止修改我自己的類調用
[Serializable]
class DumbLogger : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
Log.Print("Entry: ") + args.Method.Name;
args.FlowBehavior = FlowBehavior.Continue;
}
}
這是我在用的修改mscorlib程序的調用,並試圖在我的班級正在修改其排除所謂LOG
[assembly: MY_PROJECT.DumbLogger(
AttributeTargetTypes = "MY_PROJECT.Log",
AttributeExclude = true,
AttributePriority = 1)]
[assembly: MY_PROJECT.DumbLogger(
AttributeTargetAssemblies = "mscorlib",
AttributePriority = 2)]
但是...這沒有做的伎倆,因爲如果我看我的ILspy反編譯器,我可以看到的方法調用任何類@ mscorlib.dll中被修改,例如LOG類:
<>z__Aspects.<System.Object.ToString>b__v(text)
我想這樣做的原因是因爲當我輸入方法Log.Print時,它會生成一個stackoverflow異常,並會無限地調用它自己。
我已經意識到可能會排除某些命名空間和類像mscorlib中的字符串,但我有我的理由按照我描述的方式進行。
感謝丹尼爾,這個作品,我前一段時間收到這個答案(不是真的與問題有關),但我認爲有一個更少的「解決方法」ish的方式... –
@JoaoVitor目前沒有其他辦法。這可能會在未來發生變化,但我們沒有像'CallSiteLevelAspect'這樣的設置計劃,因爲不可能使用的案例數量似乎非常小。 –