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
- CalendarTable.cs
- UIElementParaClient.cs
- DataService.cs
- DataGridViewHeaderCell.cs
- DataTablePropertyDescriptor.cs
- UrlMappingsModule.cs
- TimeSpanOrInfiniteValidator.cs
- _BufferOffsetSize.cs
- Point3DAnimationUsingKeyFrames.cs
- StringFreezingAttribute.cs
- DefaultHttpHandler.cs
- HttpResponseHeader.cs
- TemplateBindingExpression.cs
- MediaElementAutomationPeer.cs
- PropertyTab.cs
- ArrayListCollectionBase.cs
- ComboBoxRenderer.cs
- DataGridItemAutomationPeer.cs
- SuppressIldasmAttribute.cs
- SafeEventLogWriteHandle.cs
- PackagePart.cs
- Authorization.cs
- PerformanceCounterPermissionEntryCollection.cs
- ZeroOpNode.cs
- ContentFileHelper.cs
- NavigationWindow.cs
- NeutralResourcesLanguageAttribute.cs
- ConsoleKeyInfo.cs
- BrowserTree.cs
- EntityDescriptor.cs
- CriticalHandle.cs
- UInt16Storage.cs
- XamlTemplateSerializer.cs
- BlurBitmapEffect.cs
- WebEncodingValidatorAttribute.cs
- DependencyObjectProvider.cs
- EventSinkActivity.cs
- OlePropertyStructs.cs
- RIPEMD160.cs
- HashCodeCombiner.cs
- RayHitTestParameters.cs
- COM2Properties.cs
- SqlConnectionString.cs
- TableItemPatternIdentifiers.cs
- ScriptManager.cs
- DataGridViewComboBoxColumn.cs
- WebPartConnectionsConfigureVerb.cs
- DoubleCollectionConverter.cs
- Lease.cs
- Substitution.cs
- SocketException.cs
- StringDictionary.cs
- DecimalAverageAggregationOperator.cs
- PageClientProxyGenerator.cs
- SignerInfo.cs
- SplitContainer.cs
- EnumBuilder.cs
- PropertyCondition.cs
- assertwrapper.cs
- SystemIPAddressInformation.cs
- MessageSecurityProtocolFactory.cs
- RoutedEventValueSerializer.cs
- Clipboard.cs
- TextParentUndoUnit.cs
- RightsManagementEncryptionTransform.cs
- DataChangedEventManager.cs
- PropertyIDSet.cs
- ParseElementCollection.cs
- XmlSignatureManifest.cs
- AppSettingsExpressionEditor.cs
- KeyConstraint.cs
- XmlDataSourceView.cs
- DataGridViewRowsAddedEventArgs.cs
- FileDialog_Vista.cs
- UpdatePanelTrigger.cs
- HtmlElementErrorEventArgs.cs
- XamlRtfConverter.cs
- SiteMapNodeCollection.cs
- ISO2022Encoding.cs
- PageMediaSize.cs
- SafeEventLogWriteHandle.cs
- FixedSOMGroup.cs
- EdmRelationshipRoleAttribute.cs
- KeyValueSerializer.cs
- UIElementCollection.cs
- PipelineModuleStepContainer.cs
- SubpageParagraph.cs
- StartFileNameEditor.cs
- IxmlLineInfo.cs
- BitmapInitialize.cs
- HelpPage.cs
- Stopwatch.cs
- DbConnectionPoolIdentity.cs
- FontStyle.cs
- AssemblyResourceLoader.cs
- TableLayoutColumnStyleCollection.cs
- propertytag.cs
- BinaryHeap.cs
- FixedStringLookup.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs