2011-01-27 2 views

답변

1

반사 및 (선택적으로) 동적 IL 생성을 사용하여 수행 할 수 있습니다. 당신이 (즉,이 System.Type 인스턴스가) 유형을 알면

예를 들어, 모든 필드를 (type.GetFields()FieldInfo 개체의 목록을 반환) 열거 한 다음 필드 값을 얻을 수 GetValue 방법을 사용할 수 있습니다. 이는 보안 신뢰 수준 검사가 통과되는 한 개인 필드와 함께 작동합니다.

이것은 매우 빠르지 않으므로 필드 액세스 코드를 사전 컴파일해야 할 수 있습니다 (프로파일 러가 알려준 후에 만 ​​수행하십시오!). 이 경우 System.Reflection.EmitDynamicMethod 기능을 사용할 수 있습니다. (Google 및 MSDN에서 자습서를 찾을 수 있으며 C#/F #과 관련이있는 일부 기능을 컴파일 한 다음 Reflector/ildasm에서 MSIL 출력을 검사하는 것이 도움이된다는 것을 알았습니다).

+0

컴파일/런타임시 MSIL 코드 방출/사용자 정의/조작에 관한 좋은 책이 있습니까? – geeko

+0

어떤 것이 있는지 확실하지 않습니다. 방출은 MSDN 워드 프로세서 및 리플렉터를 사용하여 다소 간결합니다. 유일한 문제는 MSIL이 올바르지 않은 경우 (즉 스택 불균형 또는 부적절한 유형 또는 다른 것) 자세한 설명이 없으며 "무언가가 잘못되었습니다"라는 예외가 있으므로 이중 및 삼중 검사를하고 추측해야합니다. 따라서 몇 가지 코드를 작성하는 것이 좋습니다. 도서 없이는 곧 사용할 수 있습니다. – zeuxcg

1

실제로 매우 쉽습니다. 이진 데이터 (직렬화되지 않은 객체가 아니라 원시 이진 데이터) 만 읽으려는 경우 BinaryReader을 사용할 수 있습니다.

관련 문제