Example #1
0
        public override void Generate(HashSet <RootType> referTypes)
        {
            if (Type.IsEnum)
            {
                GenerateEnum(referTypes);
                return;
            }

            AddChild(Header = new TypeNode(Root), referTypes);

            List <FieldInfo> fields;
            var customInterface = Type.GetInterfaces().FirstOrDefault(t => t.Name.StartsWith("ICustomSerialization"));

            if (customInterface != null)
            {
                var arguments = customInterface.GetGenericArguments();
                CustomSerializeParams = new SerializeNode[arguments.Length];
                for (int i = 0; i < arguments.Length; i++)
                {
                    AddChild(CustomSerializeParams[i] = SerializeNode.Create(arguments[i]), referTypes);
                }
                fields = new List <FieldInfo>();
            }
            else
            {
                fields = GetSerializeFields(Type);
            }

            AddChild(ReadPart  = new ReadPartNode(Root, fields), referTypes);
            AddChild(WritePart = new WritePartNode(Root, fields), referTypes);

            FileName = Header.SerializerTypeName;
        }
Example #2
0
        public override void Generate(HashSet <RootType> referTypes)
        {
            base.Generate(referTypes);

            foreach (var subType in GetSortedNoneAbstractTypes(Type))
            {
                if (subType == Type)
                {
                    var typeNode      = new TypeNode(new RootType(subType, false));
                    var serializeNode = new SerializeNode(subType, SerializeNode.NodeCategory.CLASS, typeNode);

                    AddChild(serializeNode, referTypes);
                }
                else
                {
                    AddChild(SerializeNode.Create(subType), referTypes);
                }
            }
        }
Example #3
0
 public override void Generate(HashSet <RootType> referTypes)
 {
     base.Generate(referTypes);
     AddChild(Serialize = SerializeNode.Create(TypeUtil.GetHashSetValueType(Type)), referTypes);
 }
Example #4
0
 public override void Generate(HashSet <RootType> referTypes)
 {
     base.Generate(referTypes);
     AddChild(SerializeKey   = SerializeNode.Create(TypeUtil.GetDictionaryKeyType(Type)), referTypes);
     AddChild(SerializeValue = SerializeNode.Create(TypeUtil.GetDictionaryValueType(Type)), referTypes);
 }
Example #5
0
 public override void Generate(HashSet <RootType> referTypes)
 {
     AddChild(FieldType = new TypeNode(Type, customAttribute), referTypes);
     AddChild(Serialize = SerializeNode.Create(field.FieldType, customAttribute), referTypes);
 }