우리 소프트웨어에는 리플렉션을 통해 동적으로 찾아야하는 몇 가지 클래스가 있습니다. 클래스에는 모두 리플렉션 코드가 객체를 인스턴스화하는 특정 서명이있는 생성자가 있습니다.
그러나 누군가가 메서드가 참조되는지 (예 : Visual Studio Code Lens를 통해) 확인하면 리플렉션을 통한 참조는 계산되지 않습니다. 사람들은 자신의 참조를 그리워하고 명백하게 사용되지 않는 방법을 제거 (또는 변경) 할 수 있습니다.
리플렉션을 통해 호출되도록 의도 된 마크 / 문서 방법은 어떻게해야합니까?
이상적으로,이 방법은 동료와 Visual Studio / Roslyn 및 기타 자동화 된 도구가 방법이 리플렉션을 통해 호출되도록 의도 된 방식으로 표시되어야합니다.
우리가 사용할 수있는 두 가지 옵션을 알고 있지만 둘 다 만족스럽지 않습니다. Visual Studio에서 참조를 찾을 수 없으므로
- 사용자 정의 속성을 사용 하고 생성자에이 속성을 표시하십시오.
- 문제는 속성 속성이 메소드 참조가 될 수 없으므로 생성자가 여전히 0 참조를 갖는 것으로 표시한다는 것입니다.
- 사용자 정의 속성에 익숙하지 않은 동료는이를 무시할 것입니다.
- 현재 접근 방식의 장점은 리플렉션 부분이 속성을 사용하여 호출 해야하는 생성자를 찾을 수 있다는 것입니다.
- 메소드 / 생성자가 리플렉션을 통해 호출되도록 문서화하려면 주석을 사용하십시오.
- 자동화 된 도구는 주석을 무시합니다 (동료도 마찬가지 임).
- XML 문서의 댓글은 비주얼 스튜디오 메소드 / 생성자에 추가 참조를 계산해야하는 데 사용할 수 있습니다
하자MyPlugin
그의 생성자 반사를 통해 호출 할 수있는 클래스가. 호출 리플렉션 코드가int
매개 변수 를 취하는 생성자를 검색한다고 가정하십시오 . 다음 문서는 코드 렌즈가 참조자가 1 인 생성자를 보여줍니다.
/// <see cref="MyPlugin.MyPlugin(int)"/> is invoked via reflection
어떤 더 나은 옵션이 있습니까?
리플렉션을 통해 호출되는 메소드 / 생성자를 표시하는 가장 좋은 방법은 무엇입니까?