Ejemplo n.º 1
0
        public virtual GenericClass ClassMetaToGenericClass(GenericReflector reflector, ClassInfo
                                                            classMeta)
        {
            if (classMeta.IsSystemClass())
            {
                return((GenericClass)reflector.ForName(classMeta.GetClassName()));
            }
            var className = classMeta.GetClassName();
            // look up from generic class table.
            var genericClass = LookupGenericClass(className);

            if (genericClass != null)
            {
                return(genericClass);
            }
            var reflectClass = reflector.ForName(className);

            if (reflectClass != null)
            {
                return((GenericClass)reflectClass);
            }
            GenericClass genericSuperClass = null;
            var          superClassMeta    = classMeta.GetSuperClass();

            if (superClassMeta != null)
            {
                genericSuperClass = ClassMetaToGenericClass(reflector, superClassMeta);
            }
            genericClass = new GenericClass(reflector, null, className, genericSuperClass);
            RegisterGenericClass(className, genericClass);
            var fields        = classMeta.GetFields();
            var genericFields = new GenericField[fields.Length];

            for (var i = 0; i < fields.Length; ++i)
            {
                var fieldClassMeta    = fields[i].GetFieldClass();
                var fieldName         = fields[i].GetFieldName();
                var genericFieldClass = ClassMetaToGenericClass(reflector, fieldClassMeta
                                                                );
                genericFields[i] = new GenericField(fieldName, genericFieldClass, fields[i]._isPrimitive
                                                    );
            }
            genericClass.InitFields(genericFields);
            return(genericClass);
        }
Ejemplo n.º 2
0
        public IType GetFieldType()
        {
            GenericReflector reflecotr = objectContainer.Ext().Reflector();
            IReflectClass    klass     = reflecotr.ForName(m_classname);

            IReflectField rfield = DataLayerCommon.GetDeclaredFieldInHeirarchy(klass, m_fieldname);

            return(Db4oClient.TypeResolver.Resolve(rfield.GetFieldType()));
        }