2009-02-08 2 views
0

SOA GUI 프레임 워크를 구축하고 클라이언트 모듈에서 서비스 및 서비스 종속성을 자동 감지하고 싶습니다. 나는 사람들이 잠재적으로 마커를 추가하는 것을 잊지하지 것이다 그래야 내가이 자동적으로 검사 할 수있는 방법 궁금특정 함수 호출을 찾기 위해 MSIL 코드를 검색하는 방법

[ServiceProvider(typeof(DemoService3))] 
[ServiceConsumer(typeof(DemoService1))] 

을 : 나는 클래스 모듈에 배치하여 속성을 작동하는, 지금까지 이와 같은 코드를 실행시에 null 참조를 취득합니다. 코드에서 서비스 등록 및 가져온 다음 명령을 통해됩니다

Services.RegisterService(new DemoService1()); 
Services.FetchService<DemoService3>(); 

내가이 전화를 찾으려면, 또한 유형에 전달되는 (모두 첫 번째에 대한 암시 적 타입 PARAM를 취) ... 내 의존성 및 구성을 수행하는 나머지 코드는 이미 완료되었습니다.

답변

4

IL을 CLR 수준에서 분석해야합니다 (C# 수준이 아닌).

Mono Cecil을 사용하면이 문제를 해결할 수 있습니다.

2

이렇게하려면 Mono.Cecil 또는 .NET 리플렉션을 사용할 수 있습니다.

우수한 성능과 유연성으로 인해 Mono.Cecil을 사용하는 것이 좋습니다. 다음은 시작 수있는 몇 가지 샘플 (위에 세실 + 간단한 확장)입니다 :

2

Mon. 어떤 이유로 든 일리노이 구문 분석을 손으로 고려해 볼 수 있습니다. call 및를 실제로 찾아야합니다. 에 의해 리턴 된 유형을 이해하기에 충분할 정도로 정적 분석을 수행하는명령어.

typeof(YourClass).GetMethod("YourMethod").GetMethodBody().GetILAsByteArray()은 (는) 친구입니다.

관련 문제