在asp.net中實現Assert斷言

來源:互聯網
上載者:User

最近學習了.net debugging 一書,其中於asp.net 實現斷言調試的方法尤值得學習,預設於asp.net
中是用不了assert調試的,於是實現自己定製斷言類,繼承自DefaultTraceListener,Debug類的Assert方法關聯於
Listener 的Fail方法,詳細代碼如下:

using System;
using System.Web;
using System.Diagnostics;
using System.Windows.Forms;

public class AssertClass:DefaultTraceListener
{
 public override void Fail(string message)
 {
  Fail (message,null);
 }

 public override void Fail(string message, string detailMessage)
 {
  HttpRequest req=HttpContext.Current.Request;

  if(req==null||req.UserHostName==req.ServerVariables["LOCAL_ADDR"])
  {
   StackTrace t=new StackTrace();
   string display=message+"\n"+detailMessage+"\n"+"Launch debugger?\n\n"+t.ToString();
   
   DialogResult
r=MessageBox.Show(display,"Assert
Failed",MessageBoxButtons.YesNo,MessageBoxIcon.Error,MessageBoxDefaultButton.Button1,

MessageBoxOptions.DefaultDesktopOnly);
   if(r==DialogResult.Yes)
    Debugger.Break();
  }
 }
}

於Global.asax.cs的Application_OnStart事件處理中添加如下代碼:

Debug.Listeners.Clear();

Debug.Listeners.Add(new AssertClass());

如此即可於asp.net頁中自由使用Debug.Assert(...)語句了,記住Assert方法只作用與調試版本程式!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.