internal void generateSerializer() { if (!cls.IsPublic || defaultConstructor == null || !defaultConstructor.IsPublic) { return; } FieldDescriptor[] flds = allFields; for (int i = 0, n = flds.Length; i < n; i++) { FieldDescriptor fd = flds[i]; switch (fd.type) { case FieldType.tpValue: case FieldType.tpArrayOfValue: case FieldType.tpArrayOfObject: case FieldType.tpArrayOfEnum: case FieldType.tpArrayOfRaw: case FieldType.tpLink: case FieldType.tpArrayOfOid: return; default: break; } FieldInfo f = flds[i].field; if (f == null || !f.IsPublic) { return; } } serializer = serializerGenerator.Generate(this); }
internal void generateSerializer() { if (typeof(ISelfSerializable).IsAssignableFrom(cls)) { return; } bool serializeProperties = cls.GetCustomAttributes(typeof(SerializePropertiesAttribute), true).Length != 0; if (serializeProperties || !cls.IsPublic || defaultConstructor == null || !defaultConstructor.IsPublic) { return; } FieldDescriptor[] flds = allFields; for (int i = 0, n = flds.Length; i < n; i++) { FieldDescriptor fd = flds[i]; switch (fd.type) { case FieldType.tpNullableBoolean: case FieldType.tpNullableByte: case FieldType.tpNullableSByte: case FieldType.tpNullableShort: case FieldType.tpNullableUShort: case FieldType.tpNullableChar: case FieldType.tpNullableEnum: case FieldType.tpNullableInt: case FieldType.tpNullableUInt: case FieldType.tpNullableLong: case FieldType.tpNullableULong: case FieldType.tpNullableFloat: case FieldType.tpNullableDouble: case FieldType.tpNullableDate: case FieldType.tpNullableGuid: case FieldType.tpNullableDecimal: case FieldType.tpNullableValue: case FieldType.tpValue: case FieldType.tpArrayOfValue: case FieldType.tpArrayOfObject: case FieldType.tpArrayOfEnum: case FieldType.tpArrayOfRaw: #if USE_GENERICS case FieldType.tpLink: case FieldType.tpArrayOfOid: #endif return; default: break; } FieldInfo f = flds[i].field; if (f == null || !f.IsPublic) { return; } } serializer = serializerGenerator.Generate(this); }
static void Main(string[] args) { JsonSerializer serializer = new JsonSerializer(); GeneratedSerializer generatedSerializer = new GeneratedSerializer(); Person tony = new Person { Age = 100, FirstName = "Tony", LastName = "Dwire" }; Thing table = new Thing { Name = "Table", Weight = 56 }; Console.WriteLine("Reflection:"); Console.WriteLine("\t" + serializer.Serialize(tony)); Console.WriteLine("\t" + serializer.Serialize(table)); Console.WriteLine("Generator:"); Console.WriteLine("\t" + generatedSerializer.Serialize(tony)); Console.WriteLine("\t" + generatedSerializer.Serialize(table)); }
internal void generateSerializer() { if (!cls.IsPublic || defaultConstructor == null || !defaultConstructor.IsPublic) return; FieldDescriptor[] flds = allFields; for (int i = 0, n = flds.Length; i < n; i++) { FieldDescriptor fd = flds[i]; switch (fd.type) { case FieldType.tpValue: case FieldType.tpArrayOfValue: case FieldType.tpArrayOfObject: case FieldType.tpArrayOfEnum: case FieldType.tpArrayOfRaw: case FieldType.tpLink: case FieldType.tpArrayOfOid: return; default: break; } FieldInfo f = flds[i].field; if (f == null || !f.IsPublic) return; } serializer = serializerGenerator.Generate(this); }