/// <summary> /// Creates a new instance of <see cref="KeyBasedDeserializer{TDeserializationSource, TValue, TKey, TInnerDeserializationSource}"/> with given deserializer dictionary and key extraction callback. /// </summary> /// <param name="deserializers">The deserializer dictionary.</param> /// <param name="extractKey">The key extraction callback.</param> /// <exception cref="ArgumentNullException">If any of <paramref name="deserializers"/>, <paramref name="extractKey"/> is <c>null</c>.</exception> public KeyBasedDeserializer( IDictionary <TKey, DeserializationFunctionality <TInnerDeserializationSource, TValue> > deserializers, ExtractKeyCallback extractKey ) { this._deserializers = ArgumentValidator.ValidateNotNull("Serializers", deserializers); this._extractKey = ArgumentValidator.ValidateNotNull("Extract key", extractKey); }
/// <summary> /// Creates a new <see cref="NumericIDBasedDeserializer{TDeserializationSource, TValue, TInnerDeserializationSource}"/> with given parameters. /// </summary> /// <param name="deserializers">The deserializer dictionary.</param> /// <param name="extractKey">The key extraction callback.</param> /// <param name="deserializersArray">The optional array to use for keys which are small enough.</param> /// <param name="dictionaryKeyProcessor">The optional callback to use when giving the key to dictionary lookup.</param> public NumericIDBasedDeserializer( IDictionary <Int32, DeserializationFunctionality <TInnerDeserializationSource, TValue> > deserializers, ExtractKeyCallback extractKey, DeserializationFunctionality <TInnerDeserializationSource, TValue>[] deserializersArray, Func <Int32, Int32> dictionaryKeyProcessor ) : base(deserializers ?? new Dictionary <Int32, DeserializationFunctionality <TInnerDeserializationSource, TValue> >(), extractKey) { this._deserializers = deserializersArray ?? Empty <DeserializationFunctionality <TInnerDeserializationSource, TValue> > .Array; this._processKeyForDictionary = dictionaryKeyProcessor ?? Identity <Int32> .Function; }