최근에 Reflection.Emit을 배우기 시작 했으므로 코드에서 더 나은 성능을 위해 모든 Activator 사용을 대체 할 수있었습니다. 나는 현재 일종의 직렬화 및 비 직렬화 라이브러리에 대해 생각하고있다. 특히 deserialization을 위해 나는 serialization 이전에했던 것과 똑같이 객체의 상태를 다시 만들고 싶습니다. (serialization은 100 % 올바른 것으로 가정합니다.) 그러나, 예를 들면. 이 객체에는 복잡한 논리가 있고 특정 방식으로 초기화되어야하기 때문에 여러 생성자가있는 클래스가있을 수 있으며 모든 객체는 정교합니다. 그러나 객체에 대한 모든 것을 직렬화 할 때 내가 할 수있는 가장 간단한 방법은 제공된 ctors를 무시하는 것입니다. 빈 객체를 만들고 모든 필드를 데이터로 채 웁니다. 기간.Reflection.Emit를 통해 생성자없이 인스턴스를 생성하십시오 - 가능합니까?
OpCodes.Newobj
을 ILGenerator.Emit
에 사용하면 매개 변수로 ConstructorInfo
을 전달해야합니다. 구조체의 경우에는 항상 기본 매개 변수없는 ctor를 사용하기 때문에 쉽습니다. 그러나 수업에서는 상황이 다릅니다.
어떤 도움을 주셔서 감사합니다.
'BinaryFormatter'가 생성자를 호출하지 않고 객체를 만들기 때문에 가능해야합니다. – usr