.NET 3.5에서 Reflection을 사용하여 개인 메서드를 재정의 할 수 있습니까?Reflection이있는 개인 메서드 재정의
답변
글쎄, virtual
(클래스에서 상속받은 동적 유형을 작성하여) 재정의가 가능해야하고 private virtual
을 가질 수 없습니다 (의미가 없음). internal virtual
을 무시할 수는 있지만 보안 문제가 발생할 수도 있습니다. 그래서 궁극적으로 나는 아니오라고 말하고 싶습니다.
반사를 사용하지 않음. AOP의 일종을 사용해야합니다.
반사 만 사용하는 것이 아닙니다. 아마도 가장 좋은 방법은 Reflection.Emit 또는 CodeDom과 결합 된 Reflection을 사용하여 클래스를 새 네임 스페이스에 복제하는 것입니다. 대체하려는 개인 방법을 발견하면이를 복사하지 않고 대체 방법을 내 보냅니다.
그러나 개발자가 사용할 수있는 많은 기술이있어이 기술을 훨씬 더 어렵게 만듭니다. 클래스의 구현을 여러 개인 또는 내부 클래스로 분할하는 것이 그 중 하나입니다.
참고 : CodeDom을 사용하면 메모리에 그래프를 작성하고 컴파일 한 다음 결과 어셈블리를로드해야합니다.
이것은 아마도 가치가있는 것보다 많은 문제입니다.
다른 방법으로는 Reflector을 사용하여 클래스를 디스 어셈블하고 코드를 가져 와서 replace 메서드를 사용하여 클래스를 직접 빌드 할 수 있습니다. 다시 한 번 극복해야 할 중요한 기술적 및 법적 장애물이 있습니다. 당신은 해체 된 코드에서 많은 것을 배울 수 있습니다.
Typemock Isolator은 .NET 프로파일 러 API (Roy Osherove에 따라 The Art of Unit Testing에 따라)를 통해이를 수행 할 수 있다고 가정합니다.
- 1. "개인 메서드 재정의"혼동
- 2. extjs gridfilters 개인 메서드
- 3. 메서드 재정의
- 4. 개인 메서드의 개인 재정의? (ANSWER : NVI)
- 5. Codeigniter에서 메서드/함수 재정의
- 6. jQuery Dialog 메서드 재정의
- 7. LINQ 확장 메서드 재정의
- 8. 간단한 Java 재정의 메서드
- 9. 메서드 및 스레드 재정의
- 10. HashSet의 재정의 메서드
- 11. 시스템 메서드 재정의
- 12. 개체가있는 메서드 재정의
- 13. 개인 정적 메서드 문제
- 14. F # 개인 정적 메서드
- 15. 상속 및 메서드/속성 재정의
- 16. 자바에서 HashMap equals 메서드 재정의
- 17. 정적 메서드로 인스턴스 메서드 재정의
- 18. 반환 형식을 변경하는 메서드 재정의
- 19. UITextView 붙여 넣기 메서드 재정의
- 20. 기본 사용자 모델 메서드 재정의
- 21. 레일 : ActiveRecord 연결 메서드 재정의
- 22. 파이썬에서 "+ ="를 재정의 하시겠습니까? (__iadd__() 메서드)
- 23. 상속/메서드 재정의 C++에 대한 질문
- 24. Java에서 일반 반환 형식을 사용하는 메서드 재정의
- 25. 내 주 클래스에서 재정의 된 메서드 호출
- 26. 클로저 개체의 상속 및 메서드 재정의
- 27. Obj-c 메서드 재정의/다형성 문제
- 28. 부모 메서드에서 재정의 된 부모 메서드 호출
- 29. 조상에서 typedef를 변경하여 메서드 재정의 - 가능합니까?
- 30. 제네릭이 아닌 구현을 사용하여 제네릭 메서드 재정의
... 코드가 난독 화되면 아무 것도 배울 수 없습니다. –
당신은 일부 코드가 모호하다는 것을 알 수 있습니다 :-) –