コード例 #1
0
        private void CheckCorrectTypeForField()
        {
            ClassMetadata currentFieldType = DetectFieldType();

            if (currentFieldType == null)
            {
                _reflectField = null;
                _state        = FieldMetadataState.Unavailable;
                return;
            }
            if (currentFieldType == _fieldType && Handlers4.BaseType(_reflectField.GetFieldType
                                                                         ()).IsPrimitive() == _isPrimitive)
            {
                return;
            }
            // special case when migrating from type handler ids
            // to class metadata ids which caused
            // any interface metadata id to be mapped to UNTYPED_ID
            if (Handlers4.IsUntyped(currentFieldType.TypeHandler()) && Handlers4.IsUntyped(_fieldType
                                                                                           .TypeHandler()))
            {
                return;
            }
            // FIXME: COR-547 Diagnostics here please.
            _state = FieldMetadataState.Updating;
        }
コード例 #2
0
 public virtual IReflectClass GetStoredType()
 {
     if (_reflectField == null)
     {
         return(null);
     }
     return(Handlers4.BaseType(_reflectField.GetFieldType()));
 }
コード例 #3
0
 protected virtual ITypeHandler4 TypeHandlerForClass(ObjectContainerBase container
                                                     , IReflectClass fieldType)
 {
     container.ShowInternalClasses(true);
     try
     {
         return(container.TypeHandlerForClass(Handlers4.BaseType(fieldType)));
     }
     finally
     {
         container.ShowInternalClasses(false);
     }
 }
コード例 #4
0
ファイル: TranslatedAspect.cs プロジェクト: danfma/db4o-net
        private void InitializeFieldType()
        {
            ObjectContainerBase stream      = ContainingClass().Container();
            IReflectClass       storedClass = stream.Reflector().ForClass(TranslatorStoredClass(_translator
                                                                                                ));

            Configure(storedClass, false);
            IReflectClass baseType = Handlers4.BaseType(storedClass);

            stream.ShowInternalClasses(true);
            try
            {
                _fieldType = stream.ProduceClassMetadata(baseType);
            }
            finally
            {
                stream.ShowInternalClasses(false);
            }
            if (null == _fieldType)
            {
                throw new InvalidOperationException("Cannot produce class metadata for " + baseType
                                                    + "!");
            }
        }