Ellemy.CQRS.Serializers.GoogleProtocolBuffersSerializer.Serializer.Deserialize C# (CSharp) Method

Deserialize() public method

public Deserialize ( string input, Type desiredType ) : object
input string
desiredType System.Type
return object
        public object Deserialize(string input, Type desiredType)
        {
            var bytes = ASCIIEncoding.ASCII.GetBytes(input);
            var @event = Activator.CreateInstance(desiredType);
            using (var stream = new MemoryStream(bytes))
            {
                var thisSucksINeedToFixIt = Activator.CreateInstance(desiredType);
                var protobufferType = _protoGenerator.GenerateProtoFor(thisSucksINeedToFixIt).GetType();
                var protobuffer = ProtoBuf.Serializer.NonGeneric.Deserialize(protobufferType, stream);
                
                foreach (var fieldInfo in protobuffer.GetType().GetFields())
                {
                    var setter = desiredType.GetProperty(fieldInfo.Name);
                    var value = fieldInfo.GetValue(protobuffer);
                    setter.SetValue(@event, value, null);
                }
            }
            return @event;
        }

Usage Example

Example #1
0
        public void serialize_then_deserialize()
        {
            var serializer     = new Serializer();
            var jsonSerializer = new Ellemy.CQRS.Serializers.EllemyJsonSerializer();

            for (var i = 0; i < 35; i++)
            {
                Console.WriteLine("**************************");
                var testThing = new TestThing {
                    Guid = Guid.NewGuid(), Int = i, String = "Some STring" + i
                };
                var output    = serializer.Serialize(testThing);
                var json      = jsonSerializer.Serialize(testThing);
                var startedAt = DateTime.Now;
                var result    = (TestThing)serializer.Deserialize(output, typeof(TestThing));
                Console.WriteLine("took {0} milliseconds", DateTime.Now.Subtract(startedAt).TotalMilliseconds);

                var startedJsonAt = DateTime.Now;
                jsonSerializer.Deserialize(json, typeof(TestThing));
                Console.WriteLine("JSON took {0} milliseconds", DateTime.Now.Subtract(startedJsonAt).TotalMilliseconds);
                Console.WriteLine(result.Guid);
                Console.WriteLine(result.Int);
                Console.WriteLine(result.String);
            }
        }
All Usage Examples Of Ellemy.CQRS.Serializers.GoogleProtocolBuffersSerializer.Serializer::Deserialize