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);
        }
Example #3
0
        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));
        }
Example #4
0
        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);
        }