mscorlib(4.0.0.0) API with additions
Assert.cs
2 using System.Security;
3 
4 namespace System.Diagnostics
5 {
6  internal static class Assert
7  {
8  internal const int COR_E_FAILFAST = -2146232797;
9 
10  private static AssertFilter Filter;
11 
12  static Assert()
13  {
14  Filter = new DefaultFilter();
15  }
16 
17  internal static void Check(bool condition, string conditionString, string message)
18  {
19  if (!condition)
20  {
21  Fail(conditionString, message, null, -2146232797);
22  }
23  }
24 
25  internal static void Check(bool condition, string conditionString, string message, int exitCode)
26  {
27  if (!condition)
28  {
29  Fail(conditionString, message, null, exitCode);
30  }
31  }
32 
33  internal static void Fail(string conditionString, string message)
34  {
35  Fail(conditionString, message, null, -2146232797);
36  }
37 
38  internal static void Fail(string conditionString, string message, string windowTitle, int exitCode)
39  {
40  Fail(conditionString, message, windowTitle, exitCode, StackTrace.TraceFormat.Normal, 0);
41  }
42 
43  internal static void Fail(string conditionString, string message, int exitCode, StackTrace.TraceFormat stackTraceFormat)
44  {
45  Fail(conditionString, message, null, exitCode, stackTraceFormat, 0);
46  }
47 
48  [SecuritySafeCritical]
49  internal static void Fail(string conditionString, string message, string windowTitle, int exitCode, StackTrace.TraceFormat stackTraceFormat, int numStackFramesToSkip)
50  {
51  StackTrace location = new StackTrace(numStackFramesToSkip, fNeedFileInfo: true);
52  switch (Filter.AssertFailure(conditionString, message, location, stackTraceFormat, windowTitle))
53  {
54  case AssertFilters.FailDebug:
55  if (Debugger.IsAttached)
56  {
57  Debugger.Break();
58  }
59  else if (!Debugger.Launch())
60  {
61  throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_DebuggerLaunchFailed"));
62  }
63  break;
64  case AssertFilters.FailTerminate:
65  if (Debugger.IsAttached)
66  {
67  Environment._Exit(exitCode);
68  }
69  else
70  {
71  Environment.FailFast(message, (uint)exitCode);
72  }
73  break;
74  }
75  }
76 
77  [MethodImpl(MethodImplOptions.InternalCall)]
78  [SecurityCritical]
79  internal static extern int ShowDefaultAssertDialog(string conditionString, string message, string stackTrace, string windowTitle);
80  }
81 }
Definition: __Canon.cs:3
MethodImplOptions
Defines the details of how a method is implemented.
An Overload:System.Diagnostics.Contracts.Contract.Assert contract failed.