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
- StylusEventArgs.cs
- GraphicsContext.cs
- ClientTargetSection.cs
- ByteKeyFrameCollection.cs
- AssemblyName.cs
- embossbitmapeffect.cs
- ColorMap.cs
- AttachmentService.cs
- FixedBufferAttribute.cs
- processwaithandle.cs
- ValidatorCompatibilityHelper.cs
- ImageConverter.cs
- View.cs
- EllipseGeometry.cs
- SHA384Managed.cs
- SocketManager.cs
- DeviceFiltersSection.cs
- NameService.cs
- HtmlInputHidden.cs
- DataSourceHelper.cs
- ActivationWorker.cs
- DefaultCommandConverter.cs
- MessageLoggingFilterTraceRecord.cs
- TextElementEnumerator.cs
- AnimationClock.cs
- RegionIterator.cs
- DoWorkEventArgs.cs
- Point3DValueSerializer.cs
- SqlCacheDependencyDatabaseCollection.cs
- CompositeScriptReferenceEventArgs.cs
- BuildProviderUtils.cs
- BrowserCapabilitiesCompiler.cs
- ImageKeyConverter.cs
- ScriptingRoleServiceSection.cs
- PartialArray.cs
- PlaceHolder.cs
- ProfilePropertySettings.cs
- ValueTable.cs
- DataServiceRequest.cs
- StylusPointProperty.cs
- HttpProxyCredentialType.cs
- EndPoint.cs
- TableDetailsCollection.cs
- TypeResolvingOptionsAttribute.cs
- SelectorItemAutomationPeer.cs
- X500Name.cs
- SHA256CryptoServiceProvider.cs
- UpdateEventArgs.cs
- XpsFontSubsetter.cs
- DefaultPrintController.cs
- ToolboxItem.cs
- XmlAnyElementAttributes.cs
- ColumnWidthChangedEvent.cs
- ClientConfigPaths.cs
- VectorAnimation.cs
- HostSecurityManager.cs
- SerializerWriterEventHandlers.cs
- DispatchWrapper.cs
- RecognizedPhrase.cs
- ProgressBar.cs
- EnumConverter.cs
- MultipartIdentifier.cs
- HitTestWithGeometryDrawingContextWalker.cs
- NameValueCache.cs
- TextSpanModifier.cs
- HttpWebRequest.cs
- Version.cs
- DateTimePicker.cs
- SynchronizingStream.cs
- LiteralDesigner.cs
- FlowDocumentReader.cs
- ListItem.cs
- XmlDomTextWriter.cs
- UnsafeNativeMethods.cs
- Oid.cs
- OdbcConnectionString.cs
- TextBoxBase.cs
- TrustManagerMoreInformation.cs
- _StreamFramer.cs
- BitmapImage.cs
- InfocardClientCredentials.cs
- CommunicationException.cs
- UrlMappingsSection.cs
- ComplexLine.cs
- SecurityRuntime.cs
- DiagnosticsConfiguration.cs
- ListView.cs
- MenuItem.cs
- CapabilitiesPattern.cs
- Size.cs
- XmlSerializerFactory.cs
- TimerTable.cs
- TreeChangeInfo.cs
- CompilationSection.cs
- TextFormatterImp.cs
- XPathException.cs
- JsonQueryStringConverter.cs
- DispatcherExceptionEventArgs.cs
- ToolBarOverflowPanel.cs
- OdbcCommand.cs