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(); }
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; } }