2010-04-03 4 views
1

시작하기 전에 먼저 C# .NET, 웹 서비스, 반사는 광범위하게 읽었고 실험 코드를 사용해 보았지만 반사를 사용하여 아무 것도 만들지 않았지만 반사는 나에게 새로운 것입니다.Reflection.Emit을 통해 .dll 파일로 저장하는 대신 코드 파일 (.cs) 형식으로 저장 유형 저장

런타임에 유형을 생성하는 방법을 확인한 후 many examples을 확인했습니다. 어셈블리 (.dll) 파일에 저장됩니다. 내가 본 모든 예제 중 코드 파일 대신 .dll 파일에 생성 된 형식을 저장하는 방법이 있습니다. 리플렉션에서 코드 파일을 만들 수있는 방법이 없습니까?

컴파일 된 어셈블리 대신 코드를 배포하고자하므로 코드 파일을 만들어야합니다. 내가 원하는 것은 xsd.exe처럼 .dll이나 코드 파일을 뱉어 버리는 것입니다. 내가 찾을 수있는 장소의 대부분 (다음

AssemblyBuilder ab = System.AppDomain.CurrentDomain.DefineDynamicAssembly(an, AssemblyBuilderAccess.Save); 

그리고 마지막으로

ab.Save("QuoteOfTheDay.dll"); 

답변

4

.NET 프레임 워크에 디스어셈블러가 내장되어 있지 않습니다. Reflector를 사용하여 방출 한 IL을 지원하는 소스 코드 언어 중 하나로 변환 할 수 있습니다. Reflector는 컴파일러가 생성 한 코드를 다시 소스 코드로 변환하도록 설계되었습니다. 컴파일러는 System.Reflection.Emit이 제공하는 무언가 접근 방식과 달리 생성 된 IL에 대해 보수적 인 경향이 있습니다.

소스 코드를 원한다면 먼저 생성하는 것이 가장 좋습니다. System.CodeDom을 사용하십시오. 이것이 바로 System.Xml.Serialization이 사용하는 것입니다.