Code:
/ 4.0 / 4.0 / 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. /* **************************************************************************** * * 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
- Help.cs
- QueueProcessor.cs
- ValidatorCompatibilityHelper.cs
- HideDisabledControlAdapter.cs
- CompilationLock.cs
- ProfessionalColors.cs
- MediaPlayer.cs
- DropShadowBitmapEffect.cs
- Propagator.JoinPropagator.JoinPredicateVisitor.cs
- BindingMAnagerBase.cs
- SystemUdpStatistics.cs
- XmlIlTypeHelper.cs
- XmlDocumentSurrogate.cs
- JsonDataContract.cs
- PropertyInformationCollection.cs
- FixUpCollection.cs
- XmlComplianceUtil.cs
- SecurityTokenRequirement.cs
- TransformerConfigurationWizardBase.cs
- UseLicense.cs
- ExtensionFile.cs
- BufferBuilder.cs
- AsymmetricSignatureFormatter.cs
- oledbconnectionstring.cs
- XmlObjectSerializerReadContext.cs
- MatrixConverter.cs
- DescendantQuery.cs
- HttpWriter.cs
- ActivationServices.cs
- Module.cs
- Metafile.cs
- QilCloneVisitor.cs
- TemplateBindingExtensionConverter.cs
- CodeNamespaceImportCollection.cs
- DataDocumentXPathNavigator.cs
- SingleAnimationUsingKeyFrames.cs
- Compress.cs
- EdmError.cs
- OpenFileDialog.cs
- ProfileGroupSettingsCollection.cs
- CheckableControlBaseAdapter.cs
- _IPv6Address.cs
- AssertFilter.cs
- System.Data.OracleClient_BID.cs
- ProfileSection.cs
- RegisteredExpandoAttribute.cs
- DataGridViewCellStyleBuilderDialog.cs
- DPTypeDescriptorContext.cs
- HandlerElement.cs
- ProfileServiceManager.cs
- RectValueSerializer.cs
- Int64KeyFrameCollection.cs
- CustomErrorsSection.cs
- VectorCollectionConverter.cs
- GridViewHeaderRowPresenter.cs
- TypeElementCollection.cs
- XmlSchemaObjectTable.cs
- StandardTransformFactory.cs
- UniqueSet.cs
- SqlCachedBuffer.cs
- WebPartConnectVerb.cs
- LambdaExpression.cs
- SpAudioStreamWrapper.cs
- RSAOAEPKeyExchangeFormatter.cs
- FixedSOMContainer.cs
- ProviderException.cs
- XmlUnspecifiedAttribute.cs
- DataGridViewElement.cs
- DataTableExtensions.cs
- InteropExecutor.cs
- HostingPreferredMapPath.cs
- NativeMethods.cs
- DataGridViewComboBoxColumnDesigner.cs
- AppDomainInfo.cs
- StreamResourceInfo.cs
- SQLGuid.cs
- CollectionViewSource.cs
- BooleanAnimationBase.cs
- DataGridViewControlCollection.cs
- TagPrefixAttribute.cs
- Error.cs
- HtmlSelect.cs
- SiteMapNode.cs
- DurableServiceAttribute.cs
- DBConnection.cs
- PackageFilter.cs
- RangeExpression.cs
- WindowsStreamSecurityElement.cs
- UnionCodeGroup.cs
- ReflectTypeDescriptionProvider.cs
- PersonalizationDictionary.cs
- TraceData.cs
- ImageInfo.cs
- SynchronizedInputAdaptor.cs
- SortKey.cs
- AbstractDataSvcMapFileLoader.cs
- PageRanges.cs
- ButtonField.cs
- WorkflowItemsPresenter.cs
- DataViewManagerListItemTypeDescriptor.cs