Code:
/ 4.0 / 4.0 / 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. /* **************************************************************************** * * 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
- DbTransaction.cs
- WebPartPersonalization.cs
- SqlResolver.cs
- PermissionToken.cs
- Authorization.cs
- HttpCookiesSection.cs
- NumberFunctions.cs
- WindowsGrip.cs
- XmlAggregates.cs
- ConfigurationCollectionAttribute.cs
- SqlNodeAnnotations.cs
- FontClient.cs
- DataGridViewCellStyleConverter.cs
- SimpleBitVector32.cs
- SoapAttributeOverrides.cs
- HideDisabledControlAdapter.cs
- Properties.cs
- DebugControllerThread.cs
- PersistenceProviderDirectory.cs
- ExponentialEase.cs
- CanonicalFontFamilyReference.cs
- VirtualizingPanel.cs
- OutputScope.cs
- InputReferenceExpression.cs
- CacheOutputQuery.cs
- ContextStack.cs
- SqlCrossApplyToCrossJoin.cs
- FragmentQueryProcessor.cs
- XmlILModule.cs
- DynamicPropertyHolder.cs
- Transform.cs
- RenderingEventArgs.cs
- EventArgs.cs
- ExtensionSimplifierMarkupObject.cs
- Decorator.cs
- BitVec.cs
- ContentFileHelper.cs
- SortDescriptionCollection.cs
- TrackBarRenderer.cs
- TreeNodeCollection.cs
- ToolboxItem.cs
- RepeatBehaviorConverter.cs
- MsmqElementBase.cs
- _HeaderInfo.cs
- AssociationTypeEmitter.cs
- _FixedSizeReader.cs
- UpnEndpointIdentity.cs
- TextSyndicationContentKindHelper.cs
- SelectedGridItemChangedEvent.cs
- SymmetricAlgorithm.cs
- UpDownBase.cs
- ToolStripArrowRenderEventArgs.cs
- SHA1Managed.cs
- ProtocolsSection.cs
- NamedPipeTransportManager.cs
- OdbcParameterCollection.cs
- OutputCacheSection.cs
- Light.cs
- WebServiceMethodData.cs
- AddressHeader.cs
- BuildProvider.cs
- DataSourceCache.cs
- ParameterDataSourceExpression.cs
- TextParaClient.cs
- BitmapImage.cs
- ThreadInterruptedException.cs
- BaseDataListActionList.cs
- DataTableMapping.cs
- BitmapPalettes.cs
- GiveFeedbackEvent.cs
- TTSEngineTypes.cs
- PointConverter.cs
- LongValidator.cs
- SocketElement.cs
- TypeDescriptor.cs
- SupportsEventValidationAttribute.cs
- TabletDeviceInfo.cs
- ImpersonationOption.cs
- WebScriptMetadataMessageEncodingBindingElement.cs
- RenderDataDrawingContext.cs
- ExceptionValidationRule.cs
- SingleResultAttribute.cs
- CharAnimationBase.cs
- HttpModuleCollection.cs
- StreamProxy.cs
- SerializationHelper.cs
- MetadataItem_Static.cs
- AdjustableArrowCap.cs
- RootBrowserWindow.cs
- ListViewEditEventArgs.cs
- TreeIterator.cs
- UniqueSet.cs
- MetadataImporterQuotas.cs
- _BaseOverlappedAsyncResult.cs
- X500Name.cs
- SearchForVirtualItemEventArgs.cs
- PostBackOptions.cs
- DataObjectEventArgs.cs
- PropertyEmitterBase.cs
- ConfigXmlCDataSection.cs