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
- String.cs
- CodeParameterDeclarationExpression.cs
- ConnectionStringsExpressionBuilder.cs
- HMACRIPEMD160.cs
- DoubleConverter.cs
- XmlArrayItemAttribute.cs
- _CacheStreams.cs
- RowType.cs
- SpellerInterop.cs
- CollectionBase.cs
- GeneralTransform3DTo2D.cs
- XmlNode.cs
- XPathNavigatorKeyComparer.cs
- FixedPageProcessor.cs
- MediaScriptCommandRoutedEventArgs.cs
- SmiGettersStream.cs
- HtmlContainerControl.cs
- State.cs
- CharKeyFrameCollection.cs
- ScrollChrome.cs
- TreeViewItem.cs
- TiffBitmapEncoder.cs
- FixedSOMPage.cs
- XmlSchemaDocumentation.cs
- TypeElement.cs
- ChannelSettingsElement.cs
- SHA1CryptoServiceProvider.cs
- FileNotFoundException.cs
- ConfigurationValidatorAttribute.cs
- OperandQuery.cs
- ModuleElement.cs
- shaperfactoryquerycacheentry.cs
- MessageBox.cs
- Win32.cs
- BitVector32.cs
- UIntPtr.cs
- Point3DCollection.cs
- TextSelectionProcessor.cs
- EnumDataContract.cs
- OledbConnectionStringbuilder.cs
- FixedHyperLink.cs
- IndexOutOfRangeException.cs
- ISessionStateStore.cs
- RsaKeyIdentifierClause.cs
- Attributes.cs
- XPathAncestorQuery.cs
- OutputCacheProfile.cs
- SByteStorage.cs
- CompiledELinqQueryState.cs
- Ipv6Element.cs
- AutomationEvent.cs
- CompositeScriptReference.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- CodeSnippetCompileUnit.cs
- CrossSiteScriptingValidation.cs
- CustomError.cs
- HttpCacheVary.cs
- Control.cs
- VolatileResourceManager.cs
- TextElementEditingBehaviorAttribute.cs
- Separator.cs
- FontEmbeddingManager.cs
- Blend.cs
- ContentPlaceHolder.cs
- EdmTypeAttribute.cs
- BidPrivateBase.cs
- RadialGradientBrush.cs
- DbgUtil.cs
- UrlMappingsModule.cs
- DockingAttribute.cs
- PrimitiveDataContract.cs
- FilteredAttributeCollection.cs
- DependencyObject.cs
- ZipFileInfoCollection.cs
- MembershipUser.cs
- MessageBox.cs
- BooleanSwitch.cs
- CodeGenerator.cs
- SmtpNtlmAuthenticationModule.cs
- SessionStateContainer.cs
- ContractCodeDomInfo.cs
- HttpModuleAction.cs
- ContextMenu.cs
- SelectedDatesCollection.cs
- ImplicitInputBrush.cs
- WsdlBuildProvider.cs
- cookiecontainer.cs
- BufferBuilder.cs
- RootCodeDomSerializer.cs
- InternalReceiveMessage.cs
- WinInetCache.cs
- EntityDataSourceValidationException.cs
- CodeMemberMethod.cs
- TextEditorTables.cs
- ToolStripDropDownDesigner.cs
- TransactionChannelFaultConverter.cs
- ClientSponsor.cs
- ParameterRefs.cs
- WebPartMenuStyle.cs
- CardSpacePolicyElement.cs