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
- AesCryptoServiceProvider.cs
- ControlUtil.cs
- FormViewInsertEventArgs.cs
- _ScatterGatherBuffers.cs
- BulletedList.cs
- DesignerVerb.cs
- WebPartVerb.cs
- DataGridSortCommandEventArgs.cs
- QueryOutputWriter.cs
- StringFreezingAttribute.cs
- Ray3DHitTestResult.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- VariableExpressionConverter.cs
- GlyphRunDrawing.cs
- Action.cs
- CheckPair.cs
- ServiceReference.cs
- PrintControllerWithStatusDialog.cs
- XamlReaderHelper.cs
- RandomNumberGenerator.cs
- ConfigUtil.cs
- AccessControlList.cs
- Camera.cs
- CodeCommentStatement.cs
- FileDetails.cs
- WindowPatternIdentifiers.cs
- TableChangeProcessor.cs
- XmlAttributeCache.cs
- XmlEnumAttribute.cs
- GenericsInstances.cs
- SqlBulkCopyColumnMapping.cs
- TemplatePagerField.cs
- CultureInfoConverter.cs
- SiteMapNode.cs
- TextBlockAutomationPeer.cs
- AssociationEndMember.cs
- PlatformCulture.cs
- ConfigurationSchemaErrors.cs
- ObjectTag.cs
- SimpleWebHandlerParser.cs
- DifferencingCollection.cs
- DropDownList.cs
- SvcMapFileSerializer.cs
- MissingMemberException.cs
- DataServiceBehavior.cs
- CurrencyManager.cs
- InheritanceAttribute.cs
- ProcessHostConfigUtils.cs
- PageClientProxyGenerator.cs
- StrokeNode.cs
- TransportSecurityProtocolFactory.cs
- ResXResourceSet.cs
- FileEnumerator.cs
- DataGridViewCheckBoxCell.cs
- Vector3DValueSerializer.cs
- XmlDesignerDataSourceView.cs
- RotateTransform.cs
- HttpsHostedTransportConfiguration.cs
- CacheVirtualItemsEvent.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- RangeValidator.cs
- FileStream.cs
- SignatureDescription.cs
- DropDownHolder.cs
- CounterCreationDataConverter.cs
- WorkflowDesigner.cs
- HMACSHA384.cs
- CompilerError.cs
- StylusPointPropertyInfo.cs
- XmlSchemaSimpleTypeList.cs
- CodeLabeledStatement.cs
- MetaData.cs
- ChildrenQuery.cs
- isolationinterop.cs
- DateTimeConverter.cs
- FrameworkTextComposition.cs
- MenuItemCollection.cs
- ToolStripSystemRenderer.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- ListItemViewControl.cs
- ContextMenuStripGroup.cs
- HatchBrush.cs
- FilteredXmlReader.cs
- COMException.cs
- IdleTimeoutMonitor.cs
- SessionStateSection.cs
- OutputCacheEntry.cs
- XmlName.cs
- ObjectViewEntityCollectionData.cs
- DebugView.cs
- CancelEventArgs.cs
- ObjectRef.cs
- CommandCollectionEditor.cs
- Triangle.cs
- URLIdentityPermission.cs
- XmlSerializerSection.cs
- SerializationStore.cs
- ColorDialog.cs
- IntersectQueryOperator.cs
- EncoderBestFitFallback.cs