我正在尝试编写代码以创建EpicFailException类作为ApplicationException的子类。我必须添加一个默认将HelpLink属性设置为google.com的构造函数。以下是到目前为止的内容。关于如何应用子类的任何建议?

 public class ApplicationException : Exception
 {
     public ApplicationException(string auxMessage, Exception inner) :
         base()
     {
         this.HelpLink = "http://google.com";
     }
 }

最佳答案

.NET类的设计准则已更改; current recommendation is to derive from Exception and not from ApplicationException

也就是说,如果需要在许多派生异常中设置HelpLink属性,则可能需要创建一个基类,该基类需要HelpLink属性的值作为参数,然后从该基类派生:

public abstract MyExceptionBase : Exception
{
    protected MyExceptionBase(string message, string helpLink) :
        base(message)
    {
        HelpLink = helpLink;
    }
}

public MyException : MyExceptionBase
{
    public MyException(string message) :
        base(message, "http://www.google.com")
    { }
}


请注意,您仍应遵循所有其他guidelines for custom exceptions,例如序列化,无参数构造函数等。

10-07 17:53