//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ /* */ namespace System.ComponentModel { using Microsoft.Win32; using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Runtime.Serialization; using System.Security.Permissions; /// /// Specifies an exception that is handled as a warning instead of an error. /// [HostProtection(SharedState = true)] [Serializable] public class WarningException : SystemException { private readonly string helpUrl; private readonly string helpTopic; /// /// Initializes a new instance of the class with the last Win32 error /// that occured. /// public WarningException() : this(null, null, null) { } /// /// Initializes a new instance of the class with /// the specified message and no Help file. /// public WarningException(string message) : this(message, null, null) { } /// /// Initializes a new instance of the class with /// the specified message, and with access to the specified Help file. /// public WarningException(string message, string helpUrl) : this(message, helpUrl, null) { } /// /// Initializes a new instance of the Exception class with a specified error message and a /// reference to the inner exception that is the cause of this exception. /// FxCop CA1032: Multiple constructors are required to correctly implement a custom exception. /// public WarningException( string message, Exception innerException ) : base(message, innerException) { } /// /// Initializes a new instance of the class with the /// specified message, and with access to the specified Help file and topic. /// public WarningException(string message, string helpUrl, string helpTopic) : base(message) { this.helpUrl = helpUrl; this.helpTopic = helpTopic; } /// /// Need this constructor since Exception implements ISerializable. /// protected WarningException(SerializationInfo info, StreamingContext context) : base (info, context) { helpUrl = (string) info.GetValue("helpUrl", typeof(string)); helpTopic = (string) info.GetValue("helpTopic", typeof(string)); } /// /// Specifies the Help file associated with the /// warning. This field is read-only. /// public string HelpUrl { get { return helpUrl; } } /// /// Specifies the /// Help topic associated with the warning. This field is read-only. /// public string HelpTopic { get { return helpTopic; } } /// /// Need this since Exception implements ISerializable and we have fields to save out. /// [SecurityPermission(SecurityAction.Demand, SerializationFormatter=true)] public override void GetObjectData(SerializationInfo info, StreamingContext context) { if (info == null) { throw new ArgumentNullException("info"); } info.AddValue("helpUrl", helpUrl); info.AddValue("helpTopic", helpTopic); base.GetObjectData(info, context); } } }