public static MyAny Pack(this object obj, string typeUrlPrefix = "") { var any = new MyAny(); any.TypeUrl = $"{typeUrlPrefix}/{obj.GetType().FullName}"; var bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(obj)); any.Value = Google.Protobuf.ByteString.CopyFrom(bytes); return(any); }
public static T Unpack <T>(this MyAny any, string typeUrlPrefix = "") { var typeUrl = $"{typeUrlPrefix}/{typeof(T).FullName}"; if (typeUrl == any.TypeUrl) { var json = Encoding.UTF8.GetString(any.Value.ToByteArray()); return(JsonConvert.DeserializeObject <T>(json)); } return(default(T)); }
public override Task <MyAny> Ping(MyAny request, ServerCallContext context) { if (request.Is <Foo>()) { var foo = request.Unpack <Foo>(); return(Task.FromResult(foo.Pack())); } else if (request.Is <Bar>()) { var bar = request.Unpack <Bar>(); return(Task.FromResult(bar.Pack())); } return(base.Ping(request, context)); }
public static bool Is <T>(this MyAny any, string typeUrlPrefix = "") { var typeUrl = $"{typeUrlPrefix}/{typeof(T).FullName}"; return(typeUrl == any.TypeUrl); }