536cd135cc
Former-commit-id: 5624ac747d633e885131e8349322922b6a59baaa
138 lines
5.1 KiB
C#
138 lines
5.1 KiB
C#
//---------------------------------------------------------------------
|
|
// <copyright file="EntityDataSourceValidationException.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//
|
|
// @owner Microsoft
|
|
// @backupOwner Microsoft
|
|
//---------------------------------------------------------------------
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Runtime.Serialization;
|
|
using System.Web.DynamicData;
|
|
|
|
namespace System.Web.UI.WebControls
|
|
{
|
|
/// <summary>
|
|
/// Represents errors that occur when validating properties of a dynamic data source.
|
|
/// </summary>
|
|
[Serializable]
|
|
[SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors", Justification = "SerializeObjectState used instead")]
|
|
public sealed class EntityDataSourceValidationException : Exception, IDynamicValidatorException
|
|
{
|
|
/// <summary>
|
|
/// Exception state used to serialize/deserialize the exception in a safe manner.
|
|
/// </summary>
|
|
[NonSerialized]
|
|
private EntityDataSourceValidationExceptionState _state;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="EntityDataSourceValidationException" /> class.
|
|
/// </summary>
|
|
public EntityDataSourceValidationException()
|
|
: base()
|
|
{
|
|
InitializeExceptionState(null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="EntityDataSourceValidationException" /> class.
|
|
/// </summary>
|
|
/// <param name="message">Exception message.</param>
|
|
public EntityDataSourceValidationException(string message)
|
|
: base(message)
|
|
{
|
|
InitializeExceptionState(null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="EntityDataSourceValidationException" /> class.
|
|
/// </summary>
|
|
/// <param name="message">Exception message.</param>
|
|
/// <param name="innerException">Inner exception.</param>
|
|
public EntityDataSourceValidationException(string message, Exception innerException)
|
|
: base(message, innerException)
|
|
{
|
|
InitializeExceptionState(null);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="EntityDataSourceValidationException" /> class.
|
|
/// </summary>
|
|
/// <param name="message">Exception message.</param>
|
|
/// <param name="innerExceptions">Inner exceptions.</param>
|
|
internal EntityDataSourceValidationException(string message, Dictionary<string, Exception> innerExceptions)
|
|
: base(message)
|
|
{
|
|
InitializeExceptionState(innerExceptions);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes internal exception state.
|
|
/// </summary>
|
|
/// <param name="innerExceptions">Inner exceptions.</param>
|
|
private void InitializeExceptionState(Dictionary<string, Exception> innerExceptions)
|
|
{
|
|
_state = new EntityDataSourceValidationExceptionState(innerExceptions);
|
|
SubscribeToSerializeObjectState();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns inner exceptions.
|
|
/// </summary>
|
|
IDictionary<string, Exception> IDynamicValidatorException.InnerExceptions
|
|
{
|
|
get { return _state.InnerExceptions; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Subscribes the SerializeObjectState event.
|
|
/// </summary>
|
|
private void SubscribeToSerializeObjectState()
|
|
{
|
|
SerializeObjectState += (exception, eventArgs) => eventArgs.AddSerializedState(_state);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Holds the exception state that will be serialized when the exception is serialized.
|
|
/// </summary>
|
|
[Serializable]
|
|
private class EntityDataSourceValidationExceptionState : ISafeSerializationData
|
|
{
|
|
/// <summary>
|
|
/// Inner exceptions.
|
|
/// </summary>
|
|
private readonly Dictionary<string, Exception> _innerExceptions;
|
|
|
|
/// <summary>
|
|
/// Initializes a new instance of the <see cref="EntityDataSourceValidationExceptionState"/> class.
|
|
/// </summary>
|
|
/// <param name="innerExceptions"></param>
|
|
public EntityDataSourceValidationExceptionState(Dictionary<string, Exception> innerExceptions)
|
|
{
|
|
_innerExceptions = innerExceptions ?? new Dictionary<string, Exception>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Returns inner exceptions.
|
|
/// </summary>
|
|
public Dictionary<string, Exception> InnerExceptions
|
|
{
|
|
get
|
|
{
|
|
return _innerExceptions;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Completes the deserialization.
|
|
/// </summary>
|
|
/// <param name="deserialized">The deserialized object.</param>
|
|
public void CompleteDeserialization(object deserialized)
|
|
{
|
|
((EntityDataSourceValidationException)deserialized)._state = this;
|
|
}
|
|
}
|
|
}
|
|
}
|