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; }
public virtual IReflectClass GetStoredType() { if (_reflectField == null) { return(null); } return(Handlers4.BaseType(_reflectField.GetFieldType())); }
protected virtual ITypeHandler4 TypeHandlerForClass(ObjectContainerBase container , IReflectClass fieldType) { container.ShowInternalClasses(true); try { return(container.TypeHandlerForClass(Handlers4.BaseType(fieldType))); } finally { container.ShowInternalClasses(false); } }
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 + "!"); } }