내 측면 수정 금지하는 측면을 적용 :PostSharp - mscorlib에하지만 내 자신의 클래스에서 호출
[Serializable]
class DumbLogger : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
Log.Print("Entry: ") + args.Method.Name;
args.FlowBehavior = FlowBehavior.Continue;
}
}
이 난 mscorlib에의 호출을 수정하는 데 사용 및 내 수업에서 수정되는 것을 제외하려고 무엇을
[assembly: MY_PROJECT.DumbLogger(
AttributeTargetTypes = "MY_PROJECT.Log",
AttributeExclude = true,
AttributePriority = 1)]
[assembly: MY_PROJECT.DumbLogger(
AttributeTargetAssemblies = "mscorlib",
AttributePriority = 2)]
그러나 LOG
라고 ..이 나던 트릭을 나는 방법은 예를 들어 수정되는 모든 클래스의 @의가 mscorlib.dll 호출을 볼 수 있습니다 ILspy의 디 컴파일러를 내 LOG 클래스를 보면 이유는<>z__Aspects.<System.Object.ToString>b__v(text)
내가 이것을하고 싶은 이유는 Log.Print 메서드를 입력하면 stackoverflow 예외가 발생하고 무한히 자체를 호출하기 때문입니다.
나는 이미 mscorlib의 string과 같은 특정 네임 스페이스와 클래스를 제외하고 있지만 이미 설명 된 이유가 있습니다.
Daniel,이 작품은 얼마 전 (이 질문에 정말로 관련이없는)이 답변을 받았지만 덜 "해결 방법"이라는 생각이 들었습니다. –
@JoaoVitor 현재 다른 방법은 없습니다. 그것은 미래에 바뀔 수도 있지만, CallSiteLevelAspect와 같은 무언가에 대한 계획은 없다. 왜냐하면 그것 없이는 불가능한 유스 케이스의 수가 아주 적기 때문이다. –