Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Diagnostics / Assert.cs / 1 / Assert.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== namespace System.Diagnostics { using System; using System.Security.Permissions; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; // Class which handles code asserts. Asserts are used to explicitly protect // assumptions made in the code. In general if an assert fails, it indicates // a program bug so is immediately called to the attention of the user. // Only static data members, does not need to be marked with the serializable attribute internal static class Assert { private static AssertFilter[] ListOfFilters; private static int iNumOfFilters; private static int iFilterArraySize; static Assert() { Assert.AddFilter(new DefaultFilter()); } // AddFilter adds a new assert filter. This replaces the current // filter, unless the filter returns FailContinue. // public static void AddFilter(AssertFilter filter) { if (iFilterArraySize <= iNumOfFilters) { AssertFilter[] newFilterArray = new AssertFilter [iFilterArraySize+2]; if (iNumOfFilters > 0) Array.Copy(ListOfFilters, newFilterArray, iNumOfFilters); iFilterArraySize += 2; ListOfFilters = newFilterArray; } ListOfFilters [iNumOfFilters++] = filter; } // Called when an assertion is being made. // public static void Check(bool condition, String conditionString, String message) { if (!condition) { Fail (conditionString, message); } } public static void Fail(String conditionString, String message) { // get the stacktrace StackTrace st = new StackTrace(); // Run through the list of filters backwards (the last filter in the list // is the default filter. So we're guaranteed that there will be atleast // one filter to handle the assert. int iTemp = iNumOfFilters; while (iTemp > 0) { AssertFilters iResult = ListOfFilters [--iTemp].AssertFailure (conditionString, message, st); if (iResult == AssertFilters.FailDebug) { if (Debugger.IsAttached == true) Debugger.Break(); else { if (Debugger.Launch() == false) { throw new InvalidOperationException( Environment.GetResourceString("InvalidOperation_DebuggerLaunchFailed")); } } break; } else if (iResult == AssertFilters.FailTerminate) Environment.Exit(-1); else if (iResult == AssertFilters.FailIgnore) break; // If none of the above, it means that the Filter returned FailContinue. // So invoke the next filter. } } // Called when an assert happens. // [MethodImplAttribute(MethodImplOptions.InternalCall)] public extern static int ShowDefaultAssertDialog(String conditionString, String message); } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlHelper.cs
- DataServices.cs
- DataGridViewColumn.cs
- SetterBaseCollection.cs
- Version.cs
- TrackingAnnotationCollection.cs
- CubicEase.cs
- AnonymousIdentificationSection.cs
- SystemIPGlobalStatistics.cs
- Form.cs
- LookupBindingPropertiesAttribute.cs
- ConnectionManagementSection.cs
- ConditionCollection.cs
- ParseHttpDate.cs
- FileChangesMonitor.cs
- SqlVersion.cs
- Logging.cs
- InputEventArgs.cs
- DbConnectionStringCommon.cs
- Memoizer.cs
- ToolStripOverflowButton.cs
- EventEntry.cs
- Page.cs
- TimelineCollection.cs
- NotifyIcon.cs
- TextEditorCopyPaste.cs
- WebDescriptionAttribute.cs
- CachedBitmap.cs
- DeclaredTypeValidatorAttribute.cs
- EmptyElement.cs
- XhtmlBasicTextBoxAdapter.cs
- recordstatescratchpad.cs
- AttributeCollection.cs
- TerminatorSinks.cs
- UniformGrid.cs
- SqlRowUpdatedEvent.cs
- DES.cs
- SecurityTokenTypes.cs
- ApplyTemplatesAction.cs
- ModifiableIteratorCollection.cs
- TextElementAutomationPeer.cs
- ObjectHelper.cs
- XPathNodeList.cs
- WebPartUtil.cs
- OdbcReferenceCollection.cs
- SafeTokenHandle.cs
- CodePageUtils.cs
- Array.cs
- ToolStripDesigner.cs
- Point3DCollectionValueSerializer.cs
- DateTimeUtil.cs
- NativeMethods.cs
- QilList.cs
- CachingHintValidation.cs
- XmlSchemaSimpleTypeUnion.cs
- Attributes.cs
- Compiler.cs
- TransformDescriptor.cs
- MainMenu.cs
- CompatibleComparer.cs
- PropertyChangedEventManager.cs
- ObjectStateEntryDbDataRecord.cs
- RequestDescription.cs
- DatatypeImplementation.cs
- FileUpload.cs
- ComboBoxItem.cs
- MultiBindingExpression.cs
- RegexInterpreter.cs
- SpeechSynthesizer.cs
- QilTypeChecker.cs
- ObjectContextServiceProvider.cs
- ImageListDesigner.cs
- CapabilitiesPattern.cs
- EdmSchemaAttribute.cs
- RectIndependentAnimationStorage.cs
- ContentOperations.cs
- isolationinterop.cs
- SpellCheck.cs
- CustomAttributeFormatException.cs
- InheritablePropertyChangeInfo.cs
- PageAsyncTask.cs
- ReachDocumentSequenceSerializerAsync.cs
- DataControlPagerLinkButton.cs
- IisTraceWebEventProvider.cs
- UntrustedRecipientException.cs
- XsltOutput.cs
- SmiEventSink_DeferedProcessing.cs
- KnowledgeBase.cs
- ExpressionQuoter.cs
- TemplateKey.cs
- PropertyGridCommands.cs
- wgx_commands.cs
- ErrorWebPart.cs
- XmlEncodedRawTextWriter.cs
- InputScopeManager.cs
- EpmAttributeNameBuilder.cs
- AccessDataSource.cs
- WebPartUtil.cs
- TrackingProfileSerializer.cs
- FontEditor.cs