Hello.

*background:*
Protocol Buffers for C# supports powerful reflections, and they provide 
flexiblity for message handling.
But, except prebuilt parsers such as a JSON, creating new message instance 
dynamically requires troublesome and slow way.

var messageDescriptor = GetSomeMessageDescriptor();
var message = Activator.CreateInstance(messageDescriptor.ClrType) as 
SomeMessage;

And unpacking Any instance with MessageDescriptor is more difficult.
This is in contrast to type validation by Any.Is(MessageDescriptor) 
requires MessageDescriptor.

*proposal:*

   1. *make public **MessageParser.CreateTemplate()*
   Already MessageParser class has CreateTemplate() method to build default 
   instance, but it is internal.
   I propose to change it into public directly, or implement public proxy 
   method into MessageDescriptor.
   
   var messageDescriptor = GetSomeMessageDescriptor();
   IMessage message = messageDescriptor.CreateTemplate();
   
   2. *add Any.TryUnpack(MessageDescriptor, out IMessage) method*
   I propose to provide new way to unpack `Any` without closed generic type 
   argument.
   
   var any = GetSomeAny();
   var messageDescriptor = GetSomeMessageDescriptor();
   any.TryUnpack(messageDescriptor, out IMessage unpacked);


Thanks a lot.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/36965da0-f3fc-416e-b1ba-1a31338c8f25n%40googlegroups.com.

Reply via email to