/// <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); }
/// <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); }
/// <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); }