Esempio n. 1
0
            public void ImplementIMessageAndOperator(ZMessage message)
            {
                var sizeHint = new SizeHint(_writer);

                sizeHint.Generate(message);
                _writer.WriteLine();

                var serializer = new Serialize(_writer);

                serializer.Generate(message, typeof(SpanScriber));
                _writer.WriteLine();

                serializer.Generate(message, typeof(MemoryScriber));
                _writer.WriteLine();

                serializer.Generate(message, typeof(StreamScriber));
                _writer.WriteLine();

                var exactSize = new ExactSize(_writer);

                exactSize.Generate(message, message.FullName, $"in {message.FullName} message");
                _writer.WriteLine();

                exactSize.Generate(message, message.FullName, $"{message.FullName} message");
                _writer.WriteLine();

                var tryDeserialize = new TryDeserialize(_writer);

                tryDeserialize.Generate(message, message.FullName, typeof(SpanDataStreamer <>));
                _writer.WriteLine();

                tryDeserialize.Generate(message, message.FullName, typeof(MemoryDataStreamer <>));
                _writer.WriteLine();

                tryDeserialize.Generate(message, message.FullName, typeof(StreamDataStreamer <>));
                _writer.WriteLine();
            }
Esempio n. 2
0
		private void InitializeDeserializer()
		{
			if (typeof(IPathSerializable).IsAssignableFrom(BindingTargetType))
			{
				MethodInfo m = BindingTargetType.GetMethod("TryDeserializePath", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(IPathStack), BindingTargetType }, null);
				if (m == null) throw new BindingException(String.Format("{0} is missing the static TryDeserializePath method.", BindingTargetType.FullName));
				_deserializer = delegate(IPathStack path, out object obj) {
					object[] args = new object[] { path, null };
					bool r = (bool) m.Invoke(null, args);
					obj = args[1];
					return r;
				};
			}
			else if (BindingTargetType.IsGenericType && BindingTargetType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
			{
				System.ComponentModel.NullableConverter converter = new System.ComponentModel.NullableConverter(BindingTargetType);
				BindingTargetType = converter.UnderlyingType;
			}
		}