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
- ToolStrip.cs
- XmlSchemaObjectCollection.cs
- WebBrowserHelper.cs
- DesignerHierarchicalDataSourceView.cs
- Helper.cs
- Int16AnimationBase.cs
- _Win32.cs
- ServiceHostFactory.cs
- TitleStyle.cs
- OutputBuffer.cs
- ClientOptions.cs
- FixedSOMImage.cs
- DiagnosticStrings.cs
- UTF8Encoding.cs
- CommandDesigner.cs
- DrawingContextDrawingContextWalker.cs
- StringUtil.cs
- PassportIdentity.cs
- StylusPointPropertyInfoDefaults.cs
- UIElement3D.cs
- MsmqOutputMessage.cs
- CustomAttributeSerializer.cs
- ColumnResult.cs
- MobileControlBuilder.cs
- PersonalizationState.cs
- UIElement.cs
- SmiContextFactory.cs
- Rfc4050KeyFormatter.cs
- DBDataPermission.cs
- ImageAttributes.cs
- EastAsianLunisolarCalendar.cs
- StringWriter.cs
- ResourceContainerWrapper.cs
- XamlVector3DCollectionSerializer.cs
- DropShadowBitmapEffect.cs
- SendMessageChannelCache.cs
- BordersPage.cs
- SmtpCommands.cs
- C14NUtil.cs
- X509WindowsSecurityToken.cs
- CustomWebEventKey.cs
- IIS7UserPrincipal.cs
- ResourceReader.cs
- ButtonStandardAdapter.cs
- EventLevel.cs
- PartitionResolver.cs
- LabelTarget.cs
- OleDbFactory.cs
- CharUnicodeInfo.cs
- TextSelectionHelper.cs
- NullableIntAverageAggregationOperator.cs
- ClientSettings.cs
- RtfToXamlLexer.cs
- Helpers.cs
- EventProviderWriter.cs
- DropShadowBitmapEffect.cs
- IIS7UserPrincipal.cs
- HostingEnvironmentSection.cs
- LoginViewDesigner.cs
- Perspective.cs
- JavaScriptObjectDeserializer.cs
- PasswordRecovery.cs
- Directory.cs
- DataServiceExpressionVisitor.cs
- ProvidersHelper.cs
- ExceptionUtility.cs
- JpegBitmapDecoder.cs
- WSSecurityPolicy.cs
- PropertyRecord.cs
- DispatcherFrame.cs
- PreparingEnlistment.cs
- UIElementParaClient.cs
- StylusPointPropertyUnit.cs
- PreloadedPackages.cs
- ColumnCollection.cs
- TriState.cs
- CatalogPartCollection.cs
- CompilerResults.cs
- ServiceHost.cs
- XmlElementAttribute.cs
- LazyTextWriterCreator.cs
- TargetConverter.cs
- SerializationStore.cs
- CultureSpecificStringDictionary.cs
- Italic.cs
- UpdateTranslator.cs
- _AutoWebProxyScriptEngine.cs
- BufferedOutputStream.cs
- ToolStripTextBox.cs
- SR.cs
- TextRenderer.cs
- WebZone.cs
- FileDetails.cs
- OutputCacheProfileCollection.cs
- RadioButtonAutomationPeer.cs
- WebPartTracker.cs
- TextPatternIdentifiers.cs
- ImplicitInputBrush.cs
- Preprocessor.cs
- VBIdentifierTrimConverter.cs