/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
#pragma warning disable 1634, 1691
#pragma warning disable 56506
using System;
using System.Management.Automation;
using System.Runtime.Serialization;
using System.Reflection;
using System.Security.Permissions;
namespace Microsoft.PowerShell.Commands
{
///
/// The exception that is thrown when there is no help category matching
/// a specific input string.
///
[Serializable]
public class HelpCategoryInvalidException : ArgumentException, IContainsErrorRecord
{
///
/// Initializes a new instance of the HelpCategoryInvalidException class.
///
/// The name of help category that is invalid.
public HelpCategoryInvalidException(string helpCategory) : base()
{
_helpCategory = helpCategory;
CreateErrorRecord();
}
///
/// Initializes a new instance of the HelpCategoryInvalidException class.
///
public HelpCategoryInvalidException() : base()
{
CreateErrorRecord();
}
///
/// Initializes a new instance of the HelpCategoryInvalidException class.
///
/// The name of help category that is invalid.
/// The inner exception of this exception
public HelpCategoryInvalidException(string helpCategory, Exception innerException) :
base((innerException != null) ? innerException.Message : string.Empty, innerException)
{
_helpCategory = helpCategory;
CreateErrorRecord();
}
///
/// Creates an internal error record based on helpCategory.
///
private void CreateErrorRecord()
{
_errorRecord = new ErrorRecord(new ParentContainsErrorRecordException(this), "HelpCategoryInvalid", ErrorCategory.InvalidArgument, null);
_errorRecord.ErrorDetails = new ErrorDetails(typeof(HelpCategoryInvalidException).GetTypeInfo().Assembly, "HelpErrors", "HelpCategoryInvalid", _helpCategory);
}
private ErrorRecord _errorRecord;
///
/// Gets ErrorRecord embedded in this exception.
///
/// ErrorRecord instance
public ErrorRecord ErrorRecord
{
get
{
return _errorRecord;
}
}
private string _helpCategory = System.Management.Automation.HelpCategory.None.ToString();
///
/// Gets name of the help category that is invalid.
///
/// Name of the help category.
public string HelpCategory
{
get
{
return _helpCategory;
}
}
///
/// Gets exception message for this exception.
///
/// Error message.
public override string Message
{
get
{
if (_errorRecord != null)
{
return _errorRecord.ToString();
}
return base.Message;
}
}
#region Serialization
///
/// Initializes a new instance of the HelpCategoryInvalidException class.
///
/// Serialization information.
/// Streaming context.
protected HelpCategoryInvalidException(SerializationInfo info,
StreamingContext context)
: base(info, context)
{
_helpCategory = info.GetString("HelpCategory");
CreateErrorRecord();
}
///
/// Populates a with the
/// data needed to serialize the HelpCategoryInvalidException object.
///
/// The to populate with data.
/// The destination for this serialization.
[SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter = true)]
public override void GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw PSTraceSource.NewArgumentNullException("info");
}
base.GetObjectData(info, context);
info.AddValue("HelpCategory", this._helpCategory);
}
#endregion Serialization
}
}
#pragma warning restore 56506