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
- TimelineGroup.cs
- ShapingEngine.cs
- WebHttpSecurityModeHelper.cs
- SqlParameterizer.cs
- FragmentQuery.cs
- ViewCellRelation.cs
- FlowDocumentView.cs
- ButtonFieldBase.cs
- NavigationWindowAutomationPeer.cs
- ContentElement.cs
- storepermission.cs
- LambdaCompiler.cs
- ErrorWrapper.cs
- BufferedOutputStream.cs
- SecurityPermission.cs
- InputElement.cs
- OptimisticConcurrencyException.cs
- ServiceDesigner.xaml.cs
- DtrList.cs
- CustomErrorCollection.cs
- BaseDataList.cs
- MatrixCamera.cs
- OracleBoolean.cs
- OleDbEnumerator.cs
- CustomMenuItemCollection.cs
- WindowsContainer.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- XmlEntity.cs
- XomlCompilerParameters.cs
- HostingEnvironmentSection.cs
- TypeToken.cs
- ProfessionalColors.cs
- ProfileBuildProvider.cs
- SpellerHighlightLayer.cs
- ObjectTypeMapping.cs
- AutomationEventArgs.cs
- HitTestParameters3D.cs
- WindowsImpersonationContext.cs
- Logging.cs
- ExtendedTransformFactory.cs
- SelectionProcessor.cs
- X500Name.cs
- Schema.cs
- TransformBlockRequest.cs
- IncrementalHitTester.cs
- MappedMetaModel.cs
- DataDocumentXPathNavigator.cs
- InternalResources.cs
- EventWaitHandle.cs
- Debug.cs
- Marshal.cs
- SettingsPropertyValue.cs
- SynchronizationContext.cs
- WebControl.cs
- MouseEventArgs.cs
- TransformGroup.cs
- ViewCellSlot.cs
- EventLogTraceListener.cs
- ObjectParameter.cs
- Dynamic.cs
- xml.cs
- ArrayWithOffset.cs
- PageContentCollection.cs
- BoundsDrawingContextWalker.cs
- UnsafeNativeMethods.cs
- SettingsContext.cs
- ObjectViewQueryResultData.cs
- StaticDataManager.cs
- Shape.cs
- CustomAttributeFormatException.cs
- ToolStripItemDataObject.cs
- SecurityRequiresReviewAttribute.cs
- SRGSCompiler.cs
- ConversionContext.cs
- NetworkCredential.cs
- TextBoxBase.cs
- NodeCounter.cs
- DeclarationUpdate.cs
- DisposableCollectionWrapper.cs
- SoapCodeExporter.cs
- XdrBuilder.cs
- DocumentViewerConstants.cs
- DockingAttribute.cs
- ScriptingJsonSerializationSection.cs
- XPathConvert.cs
- VSWCFServiceContractGenerator.cs
- ColorAnimationBase.cs
- Blend.cs
- ObjectDataSource.cs
- SqlDataSourceCommandEventArgs.cs
- ConfigurationElementProperty.cs
- TrackPoint.cs
- PhonemeEventArgs.cs
- GPPOINTF.cs
- SafeReadContext.cs
- RequestCacheValidator.cs
- InstanceData.cs
- EditingCoordinator.cs
- DataGridViewAdvancedBorderStyle.cs
- DataSourceXmlAttributeAttribute.cs