/// <summary> /// Verifies that calling WriteStart is valid. /// </summary> /// <param name="synchronousCall">true if the call is to be synchronous; false otherwise.</param> /// <param name="collectionStart">The <see cref="ODataCollectionStart"/> representing the collection.</param> private void VerifyCanWriteStart(bool synchronousCall, ODataCollectionStart collectionStart) { ExceptionUtils.CheckArgumentNotNull(collectionStart, "collection"); this.VerifyNotDisposed(); this.VerifyCallAllowed(synchronousCall); }
/// <summary> /// Start writing a collection - implementation of the actual functionality. /// </summary> /// <param name="collectionStart">The <see cref="ODataCollectionStart"/> representing the collection.</param> private void WriteStartImplementation(ODataCollectionStart collectionStart) { this.StartPayloadInStartState(); this.EnterScope(CollectionWriterState.Collection, collectionStart); this.InterceptException(() => { if (this.expectedItemType == null) { this.collectionValidator = new CollectionWithoutExpectedTypeValidator(/*expectedItemTypeName*/ null); } this.StartCollection(collectionStart); }); }
/// <summary> /// Asynchronously starts writing a collection - implementation of the actual functionality. /// </summary> /// <param name="collectionStart">The <see cref="ODataCollectionStart"/> representing the collection.</param> /// <returns>A task that represents the asynchronous write operation.</returns> private async Task WriteStartImplementationAsync(ODataCollectionStart collectionStart) { await this.StartPayloadInStartStateAsync() .ConfigureAwait(false); this.EnterScope(CollectionWriterState.Collection, collectionStart); await this.InterceptExceptionAsync(async() => { if (this.expectedItemType == null) { this.collectionValidator = new CollectionWithoutExpectedTypeValidator(/*expectedItemTypeName*/ null); } await this.StartCollectionAsync(collectionStart) .ConfigureAwait(false); }).ConfigureAwait(false); }
/// <summary> /// Start writing a collection. /// </summary> /// <param name="collectionStart">The <see cref="ODataCollectionStart"/> representing the collection.</param> protected abstract void StartCollection(ODataCollectionStart collectionStart);
/// <summary> /// Asynchronously start writing a collection. /// </summary> /// <param name="collection">The <see cref="ODataCollectionStart"/> representing the collection.</param> /// <returns>A task instance that represents the asynchronous write operation.</returns> public sealed override Task WriteStartAsync(ODataCollectionStart collection) { this.VerifyCanWriteStart(false, collection); return(TaskUtils.GetTaskForSynchronousOperation(() => this.WriteStartImplementation(collection))); }
/// <summary> /// Start writing a collection. /// </summary> /// <param name="collectionStart">The <see cref="ODataCollectionStart"/> representing the collection.</param> public sealed override void WriteStart(ODataCollectionStart collectionStart) { this.VerifyCanWriteStart(true, collectionStart); this.WriteStartImplementation(collectionStart); }
/// <summary>Asynchronously start writing a collection.</summary> /// <returns>A task instance that represents the asynchronous write operation.</returns> /// <param name="collectionStart">The <see cref="T:Microsoft.OData.ODataCollectionStart" /> representing the collection.</param> public abstract Task WriteStartAsync(ODataCollectionStart collectionStart);
/// <summary>Start writing a collection.</summary> /// <param name="collectionStart">The <see cref="T:Microsoft.OData.ODataCollectionStart" /> representing the collection.</param> public abstract void WriteStart(ODataCollectionStart collectionStart);
/// <summary> /// Asynchronously start writing a collection. /// </summary> /// <param name="collectionStart">The <see cref="ODataCollectionStart"/> representing the collection.</param> /// <returns>A task that represents the asynchronous write operation.</returns> protected abstract Task StartCollectionAsync(ODataCollectionStart collectionStart);
/// <summary> /// Asynchronously start writing a collection. /// </summary> /// <param name="collection">The <see cref="ODataCollectionStart"/> representing the collection.</param> /// <returns>A task instance that represents the asynchronous write operation.</returns> public sealed override async Task WriteStartAsync(ODataCollectionStart collection) { this.VerifyCanWriteStart(false, collection); await this.WriteStartImplementationAsync(collection) .ConfigureAwait(false); }
/// <summary> /// Provide additional serialization information to the <see cref="ODataCollectionWriter"/> for <paramref name="collectionStart"/>. /// </summary> /// <param name="collectionStart">The instance to set the serialization info.</param> /// <param name="serializationInfo">The serialization info to set.</param> public static void SetSerializationInfo(this ODataCollectionStart collectionStart, ODataCollectionStartSerializationInfo serializationInfo) { ExceptionUtils.CheckArgumentNotNull(collectionStart, "collectionStart"); collectionStart.SerializationInfo = serializationInfo; }