문제

다음 코드와 같이 로그 클래스와 함수를 작성했습니다. 라코 디스

기록 할 때마다 methodBase.Name 및 methodBase.DeclaringType.Name의 클래스 이름도 기록합니다.

다음 게시물 Get CurrentMethod 사용 을 읽고이 방법은 느립니다.

System.Reflection.MethodBase 대신 this.GetType ()을 사용해야합니까, 아니면 로그에 클래스 / 메서드 이름을 수동으로 기록해야합니다 (예 :Log ( "ClassName.MethodName", "log message)? 모범 사례는 무엇입니까?

도움이 되었습니까?

해결책

정말 다릅니다.

this.GetType() 접근 방식을 사용하면 메서드 정보가 손실되지만 성능이 크게 향상됩니다 (링크에 따르면 1200 배).

호출자가 문자열을 제공 할 수있는 인터페이스 (예 : Log("ClassName.MethodName", "log message"))를 제공하면 성능이 더 향상 될 수 있지만 이로 인해 API가 덜 친숙해집니다 (호출 개발자가 클래스 이름과 메서드 이름을 제공해야 함).

다른 팁

이것이 오래된 질문이라는 것을 알고 있지만 잘 수행되고 기호를 유지하는 간단한 솔루션을 버릴 것이라고 생각했습니다. 라코 디스

이 코드를 실행하면 다음과 같은 결과가 나타납니다. 라코 디스

백만 회 반복의 경우, 특히 직선 반사에 비해 전혀 나쁘지 않습니다.메소드 그룹이 델리게이트 유형으로 캐스트되고 있으며 로깅까지 심볼릭 링크를 유지합니다.바보 같은 마법의 줄이 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top