2014-07-18 4 views
1

그래서 여기에 System.Reflection.Emit을 사용하여 기존 클래스에서 바로 새 클래스를 생성하려고합니다. 기본적으로 나는이 기존 클래스의 모든 public 속성 및 필드를 가져 와서 동적으로 생성 된 새 클래스에 적용하려고합니다. 지금까지는 그렇게 좋았지 만, 기존 클래스의 필드 중 일부는 System.Xml.Serialization 어셈블리에 정의 된 속성으로 꾸미고 있으며 새로운 필드도 갖고 싶습니다.Reflection.Emitting 때 기존 속성 참조

그러나 어떻게 진행해야하는지 확신 할 수 없습니다. 나는 을 내 FieldBuilder 인스턴스에 호출해야한다고 생각하지만,이 메서드는 CustomAttributeBuilder을 필요로합니다. 그리고 그것을 올바르게 인스턴스화하여 실제 속성을 참조하는 방법을 모르겠습니다 ... 또한 기존 속성 인수를 유지하고 싶습니다. 내 새 수업에서.

tl; 기존 클래스의 속성을 Reflection.Emit을 통해 생성 된 새로운 클래스로 복사하려고 시도합니다.

+1

당신은 무엇을 시도 했습니까? 어떻게 실패 했습니까? 'CustomAttributeBuilder' 문서가 불분명 했습니까? – svick

답변

1

CustomAttributeBuilder의 생성자 중 하나를 사용하여 해당 클래스를 인스턴스화 할 수 있습니다.

MemberInfo.GetCustomAttributesData을 사용하여 기존 사용자 지정 특성에 대한 메타 데이터를 검색합니다. MemberInfo.GetCustomAttributes과 달리이 API는 속성 클래스를 인스턴스화하지 않습니다. 대신 원시 메타 데이터를 반환합니다.