コード例 #1
0
        /// <summary>
        /// Registers an additional <see cref="ITypeInspector" /> to be used by the (de)serializer.
        /// </summary>
        /// <param name="typeInspectorFactory">A function that instantiates the type inspector based on a previously registered <see cref="ITypeInspector" />..</param>
        /// <param name="where">Configures the location where to insert the <see cref="ITypeInspector" /></param>
        public TBuilder WithTypeInspector <TTypeInspector>(
            WrapperFactory <ITypeInspector, ITypeInspector, TTypeInspector> typeInspectorFactory,
            Action <ITrackingRegistrationLocationSelectionSyntax <ITypeInspector> > where
            )
            where TTypeInspector : ITypeInspector
        {
            if (typeInspectorFactory == null)
            {
                throw new ArgumentNullException("typeInspectorFactory");
            }

            if (where == null)
            {
                throw new ArgumentNullException("where");
            }

            where (typeInspectorFactories.CreateTrackingRegistrationLocationSelector(typeof(TTypeInspector), (wrapped, inner) => typeInspectorFactory(wrapped, inner)));
            return(Self);
        }
コード例 #2
0
        /// <summary>
        /// Registers an additional <see cref="INodeTypeResolver" /> to be used by the deserializer.
        /// </summary>
        /// <param name="nodeTypeResolverFactory">A factory that creates the <see cref="INodeTypeResolver" /> based on a previously registered <see cref="INodeTypeResolver" />.</param>
        /// <param name="where">Configures the location where to insert the <see cref="INodeTypeResolver" /></param>
        public DeserializerBuilder WithNodeTypeResolver <TNodeTypeResolver>(
            WrapperFactory <INodeTypeResolver, TNodeTypeResolver> nodeTypeResolverFactory,
            Action <ITrackingRegistrationLocationSelectionSyntax <INodeTypeResolver> > where
            )
            where TNodeTypeResolver : INodeTypeResolver
        {
            if (nodeTypeResolverFactory == null)
            {
                throw new ArgumentNullException("nodeTypeResolverFactory");
            }

            if (where == null)
            {
                throw new ArgumentNullException("where");
            }

            where (nodeTypeResolverFactories.CreateTrackingRegistrationLocationSelector(typeof(TNodeTypeResolver), (wrapped, _) => nodeTypeResolverFactory(wrapped)));
            return(this);
        }
コード例 #3
0
        /// <summary>
        /// Registers an additional <see cref="IYamlTypeConverter" /> to be used by the (de)serializer.
        /// </summary>
        /// <param name="typeConverterFactory">A factory that creates the <see cref="IYamlTypeConverter" /> based on a previously registered <see cref="IYamlTypeConverter" />.</param>
        /// <param name="where">Configures the location where to insert the <see cref="IYamlTypeConverter" /></param>
        public TBuilder WithTypeConverter <TYamlTypeConverter>(
            WrapperFactory <IYamlTypeConverter, IYamlTypeConverter> typeConverterFactory,
            Action <ITrackingRegistrationLocationSelectionSyntax <IYamlTypeConverter> > where
            )
            where TYamlTypeConverter : IYamlTypeConverter
        {
            if (typeConverterFactory == null)
            {
                throw new ArgumentNullException("typeConverterFactory");
            }

            if (where == null)
            {
                throw new ArgumentNullException("where");
            }

            where (typeConverterFactories.CreateTrackingRegistrationLocationSelector(typeof(TYamlTypeConverter), (wrapped, _) => typeConverterFactory(wrapped)));
            return(Self);
        }