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
- ElementHostAutomationPeer.cs
- DomNameTable.cs
- WorkflowMarkupElementEventArgs.cs
- TemplateAction.cs
- XhtmlCssHandler.cs
- TextHidden.cs
- SettingsAttributes.cs
- ProfileSection.cs
- EpmSyndicationContentSerializer.cs
- ReadWriteObjectLock.cs
- FileDataSourceCache.cs
- Speller.cs
- IDispatchConstantAttribute.cs
- WebZone.cs
- MasterPageCodeDomTreeGenerator.cs
- ModuleElement.cs
- DragEvent.cs
- SystemInformation.cs
- TextServicesCompartmentContext.cs
- SkewTransform.cs
- MetadataArtifactLoaderCompositeFile.cs
- ObjectPersistData.cs
- MatrixTransform3D.cs
- RNGCryptoServiceProvider.cs
- XmlHierarchyData.cs
- CoreSwitches.cs
- SeparatorAutomationPeer.cs
- AsymmetricSignatureDeformatter.cs
- Setter.cs
- FormatException.cs
- CacheDependency.cs
- TriggerAction.cs
- SamlSecurityToken.cs
- CommandField.cs
- ItemChangedEventArgs.cs
- Frame.cs
- ApplicationServicesHostFactory.cs
- TaskHelper.cs
- WorkflowRequestContext.cs
- MailAddress.cs
- UxThemeWrapper.cs
- DockProviderWrapper.cs
- HttpCookie.cs
- ExtensionQuery.cs
- PreservationFileWriter.cs
- TextAnchor.cs
- userdatakeys.cs
- RangeBase.cs
- StateChangeEvent.cs
- PartialClassGenerationTaskInternal.cs
- RecognizeCompletedEventArgs.cs
- WebBaseEventKeyComparer.cs
- SoapAttributes.cs
- PrimitiveCodeDomSerializer.cs
- XmlAtomicValue.cs
- mactripleDES.cs
- TraceLevelHelper.cs
- MouseEventArgs.cs
- MethodCallConverter.cs
- CodeVariableDeclarationStatement.cs
- IFlowDocumentViewer.cs
- LogEntryHeaderSerializer.cs
- QualifiedCellIdBoolean.cs
- StreamInfo.cs
- SharedHttpTransportManager.cs
- ContentElementCollection.cs
- PropertyConverter.cs
- Underline.cs
- SourceChangedEventArgs.cs
- ConfigurationStrings.cs
- ProfileEventArgs.cs
- StyleXamlParser.cs
- OrderedDictionary.cs
- ComplexLine.cs
- WindowsTokenRoleProvider.cs
- InputScopeConverter.cs
- XmlStringTable.cs
- ColumnClickEvent.cs
- Int16AnimationUsingKeyFrames.cs
- SHA384Cng.cs
- UnsafeNativeMethodsMilCoreApi.cs
- WebPartAuthorizationEventArgs.cs
- CopyAction.cs
- DataControlFieldCell.cs
- SyntaxCheck.cs
- StringArrayConverter.cs
- MSG.cs
- PipelineModuleStepContainer.cs
- GenericXmlSecurityTokenAuthenticator.cs
- ErrorRuntimeConfig.cs
- COM2ICategorizePropertiesHandler.cs
- InkCanvasSelectionAdorner.cs
- HttpCacheVaryByContentEncodings.cs
- EntityRecordInfo.cs
- FontUnit.cs
- CheckBoxList.cs
- RestHandler.cs
- ThumbAutomationPeer.cs
- HuffmanTree.cs
- Shape.cs