public virtual void TestCorrectHandlerVersion() { OpenTypeHandler openTypeHandler = new OpenTypeHandler(Container()); AssertCorrectedHandlerVersion(typeof(OpenTypeHandler0), openTypeHandler, -1); AssertCorrectedHandlerVersion(typeof(OpenTypeHandler0), openTypeHandler, 0); AssertCorrectedHandlerVersion(typeof(OpenTypeHandler2), openTypeHandler, 1); AssertCorrectedHandlerVersion(typeof(OpenTypeHandler2), openTypeHandler, 2); AssertCorrectedHandlerVersion(typeof(OpenTypeHandler), openTypeHandler, HandlerRegistry .HandlerVersion); AssertCorrectedHandlerVersion(typeof(OpenTypeHandler), openTypeHandler, HandlerRegistry .HandlerVersion + 1); StandardReferenceTypeHandler stdReferenceHandler = new StandardReferenceTypeHandler (ItemClassMetadata()); AssertCorrectedHandlerVersion(typeof(StandardReferenceTypeHandler0), stdReferenceHandler , 0); AssertCorrectedHandlerVersion(typeof(StandardReferenceTypeHandler), stdReferenceHandler , 2); PrimitiveTypeMetadata primitiveMetadata = new PrimitiveTypeMetadata(Container(), openTypeHandler, 0, null); AssertPrimitiveHandlerDelegate(typeof(OpenTypeHandler0), primitiveMetadata, 0); AssertPrimitiveHandlerDelegate(typeof(OpenTypeHandler2), primitiveMetadata, 1); AssertPrimitiveHandlerDelegate(typeof(OpenTypeHandler2), primitiveMetadata, 2); AssertPrimitiveHandlerDelegate(typeof(OpenTypeHandler), primitiveMetadata, HandlerRegistry .HandlerVersion); ArrayHandler arrayHandler = new ArrayHandler(openTypeHandler, false); AssertCorrectedHandlerVersion(typeof(ArrayHandler0), arrayHandler, 0); AssertCorrectedHandlerVersion(typeof(ArrayHandler1), arrayHandler, 1); AssertCorrectedHandlerVersion(typeof(ArrayHandler3), arrayHandler, 2); AssertCorrectedHandlerVersion(typeof(ArrayHandler3), arrayHandler, 3); AssertCorrectedHandlerVersion(typeof(ArrayHandler), arrayHandler, HandlerRegistry .HandlerVersion); ArrayHandler multidimensionalArrayHandler = new MultidimensionalArrayHandler(openTypeHandler , false); AssertCorrectedHandlerVersion(typeof(MultidimensionalArrayHandler0), multidimensionalArrayHandler , 0); AssertCorrectedHandlerVersion(typeof(MultidimensionalArrayHandler3), multidimensionalArrayHandler , 1); AssertCorrectedHandlerVersion(typeof(MultidimensionalArrayHandler3), multidimensionalArrayHandler , 2); AssertCorrectedHandlerVersion(typeof(MultidimensionalArrayHandler3), multidimensionalArrayHandler , 3); AssertCorrectedHandlerVersion(typeof(MultidimensionalArrayHandler), multidimensionalArrayHandler , HandlerRegistry.HandlerVersion); }
internal virtual IPreparedComparison PrepareComparison(ObjectContainerBase container , object constraint) { IContext context = container.Transaction.Context(); if (_fieldMetadata != null) { return(_fieldMetadata.PrepareComparison(context, constraint)); } if (_classMetadata != null) { return(_classMetadata.PrepareComparison(context, constraint)); } IReflector reflector = container.Reflector(); Db4objects.Db4o.Internal.ClassMetadata classMetadata = null; if (_bytes != null) { classMetadata = container.ProduceClassMetadata(reflector.ForObject(constraint)); } else { if (_member != null) { classMetadata = container.ClassMetadataForReflectClass(reflector.ForObject(_member )); } } if (classMetadata != null) { if (_member != null && _member.GetType().IsArray) { ITypeHandler4 arrayElementTypehandler = classMetadata.TypeHandler(); if (reflector.Array().IsNDimensional(MemberClass())) { MultidimensionalArrayHandler mah = new MultidimensionalArrayHandler(arrayElementTypehandler , false); return(mah.PrepareComparison(context, _member)); } ArrayHandler ya = new ArrayHandler(arrayElementTypehandler, false); return(ya.PrepareComparison(context, _member)); } return(classMetadata.PrepareComparison(context, constraint)); } return(null); }
private void RegisterCompositeHandlerVersions() { RegisterHandlerVersion(new StandardReferenceTypeHandler(), 0, new StandardReferenceTypeHandler0 ()); ArrayHandler arrayHandler = new ArrayHandler(); RegisterHandlerVersion(arrayHandler, 0, new ArrayHandler0()); RegisterHandlerVersion(arrayHandler, 1, new ArrayHandler1()); RegisterHandlerVersion(arrayHandler, 3, new ArrayHandler3()); RegisterHandlerVersion(arrayHandler, 5, new ArrayHandler5()); MultidimensionalArrayHandler multidimensionalArrayHandler = new MultidimensionalArrayHandler (); RegisterHandlerVersion(multidimensionalArrayHandler, 0, new MultidimensionalArrayHandler0 ()); RegisterHandlerVersion(multidimensionalArrayHandler, 3, new MultidimensionalArrayHandler3 ()); }