Cauterize.CauterizeGroupFormatter.Serialize C# (CSharp) Method

Serialize() public method

public Serialize ( Stream serializationStream, object obj ) : void
serializationStream Stream
obj object
return void
        public override void Serialize(Stream serializationStream, object obj)
        {
            var typeProp = OrderAttribute.GetPropertyByOrder(obj.GetType(), 0);
            var enumFormatter = _typeFormatterFactory.GetFormatter(typeProp.PropertyType);
            var enumValue = typeProp.GetValue(obj, null);
            enumFormatter.Serialize(serializationStream, enumValue);
            var index = ((int) enumValue) + 1;
            var subProp = OrderAttribute.GetPropertyByOrder(obj.GetType(), index);
            if (subProp != null)
            {
                var subType = subProp.PropertyType;
                var subFormatter = _typeFormatterFactory.GetFormatter(subType);
                subFormatter.Serialize(serializationStream, subProp.GetValue(obj, null));
            }
        }

Usage Example

 public void TestSerialize()
 {
     var stream = new MemoryStream();
     var group = new TestGroup();
     group.Type = TestGroupType.TestGroupTypeBaz;
     group.Baz = 4;
     var enumFormatter = new Mock<ICauterizeTypeFormatter>();
     var byteFormatter = new Mock<ICauterizeTypeFormatter>();
     var factory = new Mock<CauterizeTypeFormatterFactory>();
     factory.Setup(f => f.GetFormatter(It.IsAny<Type>())).Returns((Type t) =>
         {
             if (t == typeof (TestGroupType))
             {
                 return enumFormatter.Object;
             }
             else if (t == typeof (Byte))
             {
                 return byteFormatter.Object;
             }
             else
             {
                 return null;
             }
         });
     enumFormatter.Setup(f => f.Serialize(stream, TestGroupType.TestGroupTypeBaz));
     byteFormatter.Setup(f => f.Serialize(stream, (Byte)4));
     var formatter = new CauterizeGroupFormatter(factory.Object);
     formatter.Serialize(stream, group);
     enumFormatter.VerifyAll();
     byteFormatter.VerifyAll();
 }