c# - Can protobuf-net handle auto read-only properties? -
can protobuf-net handle new auto read-only properties, i.e. auto properties defined single get
, no private set
?
public class withreadonlyproperty { public int readonlyproperty { get; } public withreadonlyproperty(int val) { readonlyproperty = val; } }
when this
runtimetypemodel .default .add(typeof (withreadonlyproperty), false) .add(nameof(withreadonlyproperty.readonlyproperty)); var test = new withreadonlyproperty(12345); using (var output = file.create(@"c:\temp\_readonly.bin")) { try { serializer.serialize(output, test); } catch (exception e) { console.writeline(e); } }
i exception:
system.invalidoperationexception: cannot apply changes property withreadonlyproperty.readonlyproperty @ protobuf.serializers.propertydecorator.sanitycheck(typemodel model, propertyinfo property, iprotoserializer tail, boolean& writevalue, boolean nonpublic, boolean allowinternal) in c:\dev\protobuf-net\protobuf-net\serializers\propertydecorator.cs:line 46 @ protobuf.serializers.propertydecorator..ctor(typemodel model, type fortype, propertyinfo property, iprotoserializer tail) in c:\dev\protobuf-net\protobuf-net\serializers\propertydecorator.cs:line 32 @ protobuf.meta.valuemember.buildserializer() in c:\dev\protobuf-net\protobuf-net\meta\valuemember.cs:line 375 @ protobuf.meta.metatype.buildserializer() in c:\dev\protobuf-net\protobuf-net\meta\metatype.cs:line 408 @ protobuf.meta.metatype.get_serializer() in c:\dev\protobuf-net\protobuf-net\meta\metatype.cs:line 384 @ protobuf.meta.runtimetypemodel.serialize(int32 key, object value, protowriter dest) in c:\dev\protobuf-net\protobuf-net\meta\runtimetypemodel.cs:line 752 @ protobuf.meta.typemodel.serializecore(protowriter writer, object value) in c:\dev\protobuf-net\protobuf-net\meta\typemodel.cs:line 186 @ protobuf.meta.typemodel.serialize(stream dest, object value, serializationcontext context) in c:\dev\protobuf-net\protobuf-net\meta\typemodel.cs:line 217 @ protobuf.serializer.serialize[t](stream destination, t instance) in c:\dev\protobuf-net\protobuf-net\serializer.cs:line 86 ...
is possible configure protobuf-net use public constructor? there perhaps other way it? avoid decorating withreadonlyproperty
class attributes, if possible.
protobuf can use private constructors, perhaps can make private constructors protobuf use?
Comments
Post a Comment