2012-07-18 4 views
2

저는 decompiler를 사용하여 C#에서 일부 라이브러리의 소스를 가져 왔습니다. (나에게) 알 수없는 중 하나는 생산 구축 않습니다 : <>c__DisplayClass9 또는 그냥 grok 수 없습니다 (IntPtr) this.<OptimizeVisuals>b__6 같은무슨 식 <> c__DisplayClass9 의미는 C#

Action action = null; 
<>c__DisplayClass9 class2; 
action = new Action(class2, (IntPtr) this.<OptimizeVisuals>b__6); 

것. 게다가이 표현식은 C# 컴파일러로 컴파일 할 수 없으므로 좀 더 친숙한 것을 생각해 내야합니다. 이것의 google 일부를 시험해 보았다. 그러나 운 없음으로. 힌트를 좀 주시겠습니까? 그것은 그것이 익명의 방법으로 할 수있는 것 같아요,하지만 그것은 내 최고의 추측입니다.

미리 감사드립니다.

EDIT : 내가 달성해야하는 것에 대해 내 초기 질문이 명확하지 않을 수 있습니다. 재 강조하기 위해서 : 나는 앞서 언급 한 코드를 디 컴파일 전에 같은 일을하는 일반적인 C# 코드로 변환해야합니다. 내 임무는 내가 디 컴파일하는 라이브러리에서 특정 기능을 변경하는 것과 동시에 다른 기능을 그대로 유지하는 것이다. 이것은 나를 위해 정말로 중요한 일입니다. 누군가가 이것을 도울 수 있다면 정말 고마워요.

+0

아마도 라이브러리가 난독 화 될 수 있습니다. – Batuu

+0

[이 질문에 대한 답변을보십시오 (http://stackoverflow.com/questions/7357525/empty-before-c-sharp-class-name). – Batuu

답변

5

컴파일러는 자동 구현 속성, 익명 메소드 등을 생성합니다. 자신의 이름과의 충돌을 막기 위해 컴파일러는 C#에서는 불법 인 이름을 사용하지만 CLR에서는 여전히 유효합니다.

+0

이것은 로컬 변수도 고려합니다. – Batuu

+0

좋습니다. 어쩌면 당신은이 표현을 어떻게 재 작성하여 그것이 합법적이게하고 그것이 원래하는 것과 똑같이하는지를 알 수있을 것입니다. – Haspemulator

관련 문제