//------------------------------------------------------------------------------
//
// 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);
}
}
}