//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.ComponentModel { using Microsoft.Win32; using System; using System.Diagnostics; using System.Runtime.Serialization; using System.Security.Permissions; /// /// Represents the exception thrown when a component cannot be granted a license. /// [HostProtection(SharedState = true)] [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1032:ImplementStandardExceptionConstructors")] // must not, a Type is required in all constructors. [Serializable] public class LicenseException : SystemException { private Type type; private object instance; /// /// Initializes a new instance of the class for the /// specified type. /// public LicenseException(Type type) : this(type, null, SR.GetString(SR.LicExceptionTypeOnly, type.FullName)) { } /// /// Initializes a new instance of the class for the /// specified type and instance. /// public LicenseException(Type type, object instance) : this(type, null, SR.GetString(SR.LicExceptionTypeAndInstance, type.FullName, instance.GetType().FullName)) { } /// /// Initializes a new instance of the class for the /// specified type and instance with the specified message. /// public LicenseException(Type type, object instance, string message) : base(message) { this.type = type; this.instance = instance; HResult = HResults.License; } /// /// Initializes a new instance of the class for the /// specified innerException, type and instance with the specified message. /// public LicenseException(Type type, object instance, string message, Exception innerException) : base(message, innerException) { this.type = type; this.instance = instance; HResult = HResults.License; } /// /// Need this constructor since Exception implements ISerializable. /// protected LicenseException(SerializationInfo info, StreamingContext context) : base (info, context) { type = (Type) info.GetValue("type", typeof(Type)); instance = info.GetValue("instance", typeof(object)); } /// /// Gets the type of the component that was not granted a license. /// public Type LicensedType { get { return type; } } /// /// 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("type", type); info.AddValue("instance", instance); base.GetObjectData(info, context); } } }