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
- UIElement3D.cs
- SqlDataSourceConfigureFilterForm.cs
- XslException.cs
- SrgsRule.cs
- OwnerDrawPropertyBag.cs
- ObfuscationAttribute.cs
- NamespaceDecl.cs
- AutomationAttributeInfo.cs
- SqlRetyper.cs
- SchemaNotation.cs
- TextPatternIdentifiers.cs
- HtmlShim.cs
- List.cs
- WebPartTransformerCollection.cs
- ReferenceAssemblyAttribute.cs
- DbConvert.cs
- XmlAggregates.cs
- httpapplicationstate.cs
- TypeDefinition.cs
- StrokeFIndices.cs
- ParseNumbers.cs
- WebPartEditorCancelVerb.cs
- ScriptManager.cs
- CancellationTokenRegistration.cs
- DataTemplate.cs
- CheckBoxAutomationPeer.cs
- DataBindingHandlerAttribute.cs
- DesignerCategoryAttribute.cs
- HandlerBase.cs
- ETagAttribute.cs
- VirtualDirectoryMapping.cs
- StandardTransformFactory.cs
- EnvironmentPermission.cs
- BindingSourceDesigner.cs
- DefaultTextStore.cs
- CanonicalizationDriver.cs
- SqlServer2KCompatibilityAnnotation.cs
- EdmError.cs
- LineProperties.cs
- WebPartAuthorizationEventArgs.cs
- ResourceContainer.cs
- XPathNavigator.cs
- GridViewItemAutomationPeer.cs
- CaseInsensitiveOrdinalStringComparer.cs
- ControlCachePolicy.cs
- XmlMemberMapping.cs
- SHA1Managed.cs
- EntitySet.cs
- _FtpControlStream.cs
- TypeSemantics.cs
- DetailsViewInsertEventArgs.cs
- WorkflowDesignerColors.cs
- ItemMap.cs
- XmlSchemaSimpleContentExtension.cs
- ArglessEventHandlerProxy.cs
- ArraySegment.cs
- AtomicFile.cs
- InlineObject.cs
- UserControl.cs
- RepeaterCommandEventArgs.cs
- BitHelper.cs
- DashStyle.cs
- TextTreeRootTextBlock.cs
- OnOperation.cs
- WebEventCodes.cs
- DataMemberFieldConverter.cs
- SqlDataSourceCache.cs
- EntityDesignerDataSourceView.cs
- OnOperation.cs
- StreamWriter.cs
- SymbolEqualComparer.cs
- RMEnrollmentPage1.cs
- FieldMetadata.cs
- PrimitiveSchema.cs
- BrowserCapabilitiesCompiler.cs
- SizeAnimationBase.cs
- SmtpNetworkElement.cs
- XamlRtfConverter.cs
- ActivityExecutorSurrogate.cs
- SafeThemeHandle.cs
- DataGridViewLinkColumn.cs
- AuthenticationSection.cs
- TextTabProperties.cs
- RenderingBiasValidation.cs
- Pts.cs
- SortDescription.cs
- FontFamily.cs
- EntityParameter.cs
- ConfigXmlText.cs
- CacheForPrimitiveTypes.cs
- DragEvent.cs
- CLSCompliantAttribute.cs
- TemplateContentLoader.cs
- MimeObjectFactory.cs
- SetStoryboardSpeedRatio.cs
- MethodSet.cs
- PtsContext.cs
- AsymmetricCryptoHandle.cs
- formatter.cs
- TypedColumnHandler.cs