如何在属性中存储多个值类型?

Mic*_*l A 4 .net c# enums

我有一个我正在创建的事件类,目前看起来如下所示:

public class SharePointOnErrorEventsArgs : EventArgs
{
    public SharePointOnErrorEventsArgs(string message, bool showException, Exception exception)
    {
        Message = message;
        Exception = exception;
        ShowException = showException;
    }

    /// <summary>
    /// Property to allow the storage of a more verbose and explainable error message
    /// </summary>
    public string Message { get; private set; }

    /// <summary>
    /// Object to store full exception information within
    /// </summary>
    public Exception Exception { get; private set; }

    /// <summary>
    /// Boolean value allows for verbose messages to be sent up the stack without
    /// the need for displaying a full exception object, or stack trace.
    /// </summary>
    public bool ShowException { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

现在,而不是发送true或false用于showException我想送三个值中的一个Debug,Info或者Error-我该如何处理这样的事情?我真的不想使用字符串,因为我希望始终将其限制为这三个值中的一个,但我不确定如何在使用属性时处理此问题.

Szy*_*mon 11

你可以使用枚举:

public enum ShowExceptionLevel
{
    Debug,
    Info,
    Error
}
Run Code Online (Sandbox Code Playgroud)

所以你的课程将是:

public class SharePointOnErrorEventsArgs : EventArgs
{

    public enum ShowExceptionLevel
    {
        Debug,
        Info,
        Error
     }

    public SharePointOnErrorEventsArgs(string message, ShowExceptionLevel showExceptionLevel, Exception exception)
    {
        Message = message;
        Exception = exception;
        ShowException = showException;
    }

    /// <summary>
    /// Property to allow the storage of a more verbose and explainable error message
    /// </summary>
    public string Message { get; private set; }

    /// <summary>
    /// Object to store full exception information within
    /// </summary>
    public Exception Exception { get; private set; }

    /// <summary>
    /// Boolean value allows for verbose messages to be sent up the stack without
    /// the need for displaying a full exception object, or stack trace.
    /// </summary>
    public ShowExceptionLevel ShowException { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)