在构造函数中使用了Contract.Requires对参数进行检查,代码如下:
Contract.Requires<ArgumentNullException>(comment.BlogPost != null,
"comment.BlogPost can not be null");
当comment.BlogPost的值为null时,会弹出会弹出Visual Studio Just-In-Time Debugger窗口:
查看事件日志(Windows Logs > Application),发现.NET Runteim 1025错误:
Application: w3wp.exe
Framework Version: v4.0.30319
Description: The application requested process termination through System.Environment.FailFast(string message).
Message: Must use the rewriter when using Contract.Requires<TException>
Stack:
at System.Environment.FailFast(System.String)
at System.Diagnostics.Contracts.Contract.AssertMustUseRewriter(System.Diagnostics.Contracts.ContractFailureKind, System.String)
at System.Diagnostics.Contracts.Contract.Requires[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](Boolean, System.String)
想要的效果是扔出ArgumentNullException异常,该如何实现?
看看这里,刚刚我没找到这里所需要的东西,在本地没有弄成功。
搞定!谢谢!
需要在Visual Studio中,打开使用Contract.Requires的项目的属性,选择Code Contracts:
1. 在Assembly Mode中选择"Standard Contract Requires"
2. 在Runtime Checking中选中"Perform Runteim Contract Checking",并设置为Full。
如下图:
@dudu: 这东西是在哪里设置的,我怎么没找到这个页面,顺便说下是中文版的VS2010
@az235: 你要安装Code Contracts,下载地址:http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx
@dudu: 难怪我找半天都找不到这东西:)