Protobuf-Net을 사용하면 매개 변수없는 생성자를 사용하지 않고 클래스를 deserialize 할 수없는 것처럼 보입니다. 그렇지 않으면 뭔가가 누락 될 수 있습니다.매개 변수없는 생성자가없는 클래스에서 Protobuf-Net을 사용할 수 있습니까?
매개 변수없는 생성자를 사용하는 클래스는 필요하지 않습니다. 내가 사용할 수있는 어떤 종류의 속성이나 다른 기법이 있습니까?
Protobuf-Net을 사용하면 매개 변수없는 생성자를 사용하지 않고 클래스를 deserialize 할 수없는 것처럼 보입니다. 그렇지 않으면 뭔가가 누락 될 수 있습니다.매개 변수없는 생성자가없는 클래스에서 Protobuf-Net을 사용할 수 있습니까?
매개 변수없는 생성자를 사용하는 클래스는 필요하지 않습니다. 내가 사용할 수있는 어떤 종류의 속성이나 다른 기법이 있습니까?
protobuf-net은 현재 매개 변수없는 생성자가 작동하는 데 달려 있습니다.
그러나 해당 생성자는 public (it will use reflection if need be to invoke it) 일 필요가 없으므로 protobuf-net (이유에 대한 설명 추가)에서 사용하기 위해 필요한 개인용 생성자를 정의하고 특정 직렬화 관련 문제를 처리 할 수 있습니다.
이는 '불법'인스턴스를 생성 할 수있는에서 API의 나머지 부분을 유지합니다.
Marc는 가장 바깥 쪽 메시지 객체에 대해 이야기하는 경우 객체를 직접 만들고 Serializer.Merge를 호출 할 수 있다고 지적했습니다. 그러나 객체를 생성해야하는 경우 (현재 인스턴스가 null이거나 목록/배열의 새 항목이기 때문에) 기본 생성자를 찾습니다.
ShuggyCoUk는 매개 변수가없는 생성자를 사용하는 방법에 대한 권리입니다.
메시지 개체의 경우 메시지 개체의 경우 사용자가 직접 개체를 만들고 Serializer.Merge
을 호출 할 수 있습니다. 그러나 객체를 생성해야하는 경우 (현재 null
인스턴스가 있거나 목록/배열의 새 항목에 대해) 기본 생성자를 찾습니다.
나는 또한 "단지 FormatterServices
를 통해 원시 객체를 생성 '라고하는 속성의 일부 마크 업을 제공 할 수을 가정 , 그러나 이것은 (개인 매개 변수가없는 생성자와 비교) 불필요한 느낌, 그리고 모든 플랫폼에서 작동하지 않을 수 있습니다 (Silverlight, CF 등 - 가능성이있는 문제 임).
요즘 사용 가능한 SkipConstructor 옵션을 사용하여 수행 한 작업 ('FormatterServices')이 맞습니까? – DeCaf
@DeCaf 예, 그렇습니다. –
매개 변수없는 생성자가 언제 호출됩니까? 다른 필드가 업데이트되기 전에? – mcmillab