Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Utils / ContractUtils.cs / 1305376 / ContractUtils.cs
/* **************************************************************************** * * Copyright (c) Microsoft Corporation. * * This source code is subject to terms and conditions of the Microsoft Public License. A * copy of the license can be found in the License.html file at the root of this distribution. If * you cannot locate the Microsoft Public License, please send an email to * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound * by the terms of the Microsoft Public License. * * You must not remove this notice, or any other, from this software. * * * ***************************************************************************/ using System.Collections.Generic; using System.Diagnostics; using System.Linq.Expressions; #if SILVERLIGHT using System.Core; #endif namespace System.Dynamic.Utils { // Will be replaced with CLRv4 managed contracts internal static class ContractUtils { internal static Exception Unreachable { get { Debug.Assert(false, "Unreachable"); return new InvalidOperationException("Code supposed to be unreachable"); } } internal static void Requires(bool precondition) { if (!precondition) { throw new ArgumentException(Strings.MethodPreconditionViolated); } } internal static void Requires(bool precondition, string paramName) { Debug.Assert(!string.IsNullOrEmpty(paramName)); if (!precondition) { throw new ArgumentException(Strings.InvalidArgumentValue, paramName); } } internal static void RequiresNotNull(object value, string paramName) { Debug.Assert(!string.IsNullOrEmpty(paramName)); if (value == null) { throw new ArgumentNullException(paramName); } } internal static void RequiresNotEmpty(ICollection collection, string paramName) { RequiresNotNull(collection, paramName); if (collection.Count == 0) { throw new ArgumentException(Strings.NonEmptyCollectionRequired, paramName); } } /// /// Requires the range [offset, offset + count] to be a subset of [0, array.Count]. /// ///Array is ///null .Offset or count are out of range. internal static void RequiresArrayRange(IList array, int offset, int count, string offsetName, string countName) { Debug.Assert(!string.IsNullOrEmpty(offsetName)); Debug.Assert(!string.IsNullOrEmpty(countName)); Debug.Assert(array != null); if (count < 0) throw new ArgumentOutOfRangeException(countName); if (offset < 0 || array.Count - offset < count) throw new ArgumentOutOfRangeException(offsetName); } /// /// Requires the array and all its items to be non-null. /// internal static void RequiresNotNullItems(IList array, string arrayName) { Debug.Assert(arrayName != null); RequiresNotNull(array, arrayName); for (int i = 0; i < array.Count; i++) { if (array[i] == null) { throw new ArgumentNullException(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}[{1}]", arrayName, i)); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GridViewSelectEventArgs.cs
- AggregateNode.cs
- CallbackException.cs
- XmlReturnReader.cs
- ImageButton.cs
- AnnotationAdorner.cs
- ModuleConfigurationInfo.cs
- ContextMenuService.cs
- __Filters.cs
- OleDbReferenceCollection.cs
- UnsupportedPolicyOptionsException.cs
- DataColumnPropertyDescriptor.cs
- SQLMembershipProvider.cs
- TableCell.cs
- AliasedSlot.cs
- ObjectDataSourceMethodEventArgs.cs
- CursorConverter.cs
- WebInvokeAttribute.cs
- CookieHandler.cs
- ListBindingConverter.cs
- XsltOutput.cs
- SelectManyQueryOperator.cs
- InlineObject.cs
- MenuCommands.cs
- TextEndOfParagraph.cs
- TabControlCancelEvent.cs
- GenericNameHandler.cs
- MonitoringDescriptionAttribute.cs
- BinaryObjectWriter.cs
- WebPageTraceListener.cs
- ASCIIEncoding.cs
- RectIndependentAnimationStorage.cs
- Helpers.cs
- DoubleKeyFrameCollection.cs
- SizeAnimation.cs
- ClientSettingsSection.cs
- ELinqQueryState.cs
- AuthenticationManager.cs
- StylusOverProperty.cs
- ApplicationSecurityManager.cs
- CodeArgumentReferenceExpression.cs
- X509SecurityToken.cs
- ComponentEvent.cs
- DefaultObjectMappingItemCollection.cs
- ImageAnimator.cs
- ConditionalAttribute.cs
- SecurityException.cs
- UserCancellationException.cs
- EncryptedReference.cs
- InputElement.cs
- SizeChangedEventArgs.cs
- GroupBoxAutomationPeer.cs
- StringUtil.cs
- XmlNamedNodeMap.cs
- FocusChangedEventArgs.cs
- IntSecurity.cs
- ReadOnlyDictionary.cs
- DataGridViewRowPrePaintEventArgs.cs
- RSAPKCS1SignatureFormatter.cs
- SecurityKeyEntropyMode.cs
- DesignOnlyAttribute.cs
- ContentPathSegment.cs
- WizardSideBarListControlItem.cs
- ItemList.cs
- WebScriptServiceHost.cs
- CombinedGeometry.cs
- WaitingCursor.cs
- OracleCommandBuilder.cs
- BufferedGraphicsContext.cs
- OpCodes.cs
- TabletDeviceInfo.cs
- LayeredChannelListener.cs
- VisualProxy.cs
- FormatSettings.cs
- ValueQuery.cs
- StringComparer.cs
- VisualStateGroup.cs
- RayHitTestParameters.cs
- RightNameExpirationInfoPair.cs
- OutputWindow.cs
- LocatorBase.cs
- SelectedCellsChangedEventArgs.cs
- WorkflowValidationFailedException.cs
- HttpListenerException.cs
- RegisteredExpandoAttribute.cs
- SwitchAttribute.cs
- AutomationAttributeInfo.cs
- FloaterParaClient.cs
- TableCellCollection.cs
- NamespaceListProperty.cs
- Internal.cs
- TextParagraphCache.cs
- MatchingStyle.cs
- DataServiceQuery.cs
- webproxy.cs
- InputScopeAttribute.cs
- EntityStoreSchemaGenerator.cs
- FullTrustAssembly.cs
- FixedTextContainer.cs
- RectangleGeometry.cs