2009-09-20 5 views

답변

7

글쎄, virtual (클래스에서 상속받은 동적 유형을 작성하여) 재정의가 가능해야하고 private virtual을 가질 수 없습니다 (의미가 없음). internal virtual을 무시할 수는 있지만 보안 문제가 발생할 수도 있습니다. 그래서 궁극적으로 나는 아니오라고 말하고 싶습니다.

1

반사를 사용하지 않음. AOP의 일종을 사용해야합니다.

5

반사 만 사용하는 것이 아닙니다. 아마도 가장 좋은 방법은 Reflection.Emit 또는 CodeDom과 결합 된 Reflection을 사용하여 클래스를 새 네임 스페이스에 복제하는 것입니다. 대체하려는 개인 방법을 발견하면이를 복사하지 않고 대체 방법을 내 보냅니다.

그러나 개발자가 사용할 수있는 많은 기술이있어이 기술을 훨씬 더 어렵게 만듭니다. 클래스의 구현을 여러 개인 또는 내부 클래스로 분할하는 것이 그 중 하나입니다.

참고 : CodeDom을 사용하면 메모리에 그래프를 작성하고 컴파일 한 다음 결과 어셈블리를로드해야합니다.

이것은 아마도 가치가있는 것보다 많은 문제입니다.

다른 방법으로는 Reflector을 사용하여 클래스를 디스 어셈블하고 코드를 가져 와서 replace 메서드를 사용하여 클래스를 직접 빌드 할 수 있습니다. 다시 한 번 극복해야 할 중요한 기술적 및 법적 장애물이 있습니다. 당신은 해체 된 코드에서 많은 것을 배울 수 있습니다.

+0

... 코드가 난독 화되면 아무 것도 배울 수 없습니다. –

+2

당신은 일부 코드가 모호하다는 것을 알 수 있습니다 :-) –