Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        public static bool Is <T>(this MyAny any, string typeUrlPrefix = "")
        {
            var typeUrl = $"{typeUrlPrefix}/{typeof(T).FullName}";

            return(typeUrl == any.TypeUrl);
        }