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; }
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); } } }
public override void Generate(HashSet <RootType> referTypes) { base.Generate(referTypes); AddChild(Serialize = SerializeNode.Create(TypeUtil.GetHashSetValueType(Type)), referTypes); }
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); }
public override void Generate(HashSet <RootType> referTypes) { AddChild(FieldType = new TypeNode(Type, customAttribute), referTypes); AddChild(Serialize = SerializeNode.Create(field.FieldType, customAttribute), referTypes); }