private static DeserializationDelegate CreateDelegate(ArrayDeserializationDelegate functionality) { ArgumentValidator.ValidateNotNull("Functionality", functionality); return((ArrayIndex <TArrayElement> source, out Int32 unitsProcessed, out Boolean success) => { var idx = source.Index; var originalIdx = idx; var retVal = functionality(source.Array, ref idx); unitsProcessed = idx - originalIdx; success = true; return retVal; }); }
/// <summary> /// Creates a new instance of <see cref="DeserializationFunctionalityWrapperForArrays{TDeserializationSource, TValue}"/> with given callback which should perform the deserialization. /// </summary> /// <param name="functionality">The callback to perform deserialization.</param> /// <exception cref="ArgumentNullException">If <paramref name="functionality"/> is <c>null</c>.</exception> public DeserializationFunctionalityWrapperForArrays(ArrayDeserializationDelegate functionality) : base(CreateDelegate(functionality)) { }