system.reflection.emit 네임 스페이스를 사용하여 필드를 속성으로 교체합니까?

StackOverflow https://stackoverflow.com/questions/989095

문제

반사시 네임 스페이스를 사용하여 필드를 제거하고 내 자산 구현으로 바꾸는 방법을 찾으려고 노력하고 있습니다. Emit 및 Writing IL 코드를 직접 작성하여 코드를 생성하는 방법에 대해 읽었지만 반사 네임 스페이스를 사용하여 교체 또는 제거하는 방법에 대한 예제는 보지 못했습니다. 누구든지 그 선을 따라 무언가의 예를 보여줄 수 있습니까?

감사.

도움이 되었습니까?

해결책

내가 아는 한 이것은 CLR에서 불가능합니다. 일단로드 된 후에는 유형을 수정할 수 있다고 생각조차하지 않습니다. 속성을 사용하는 방법에 따라 사용자 정의 타이핑 스크립터를 사용할 수 있습니다 (구성 요소는이를 사용하여 Windows 양식의 툴팁 구성 요소와 같은 속성을 동적으로 확장) 또는 종속성 전문가를 사용할 수 있습니다. 그러나로드 된 유형의 신규 또는 수정 된 구성원에 대한 평범한 오래된 늦은 후반의 바인드는 가능하지 않다고 생각합니다.

어셈블리를 사용하지 않는 이유는 무엇입니까? ReffectionOnlyLoadFR에서 어셈블리를 AppDomain에로드하기 전에 DLL을로드 한 다음 A를 방출합니다. 새로운 동적으로 생성 된 메모리 유형을 입력 한 다음로드 하시겠습니까?

다른 팁

PostSharp를 사용하여 Aspect 지향적 프로그래밍을 조사해 볼 수 있습니다.

나는 PostSharp를 사용한 적이 없으므로 정확히 당신이 이것을 어떻게 달성 할 수 있는지에 대한 구체적인 아이디어는 없습니다. 그러나 이것은 PostSharp (PostSharp)에서 할 수있는 것과 비슷하게 들립니다 (속성 또는 필드의 사전/사후 액세스를 실행하기 위해 코드를 설정).

http://www.postsharp.org/

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