Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Scripting / Actions / CallInfo.cs / 1305376 / CallInfo.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.Collections.ObjectModel; using System.Dynamic.Utils; using System.Linq.Expressions; #if SILVERLIGHT using System.Core; #endif //SILVERLIGHT namespace System.Dynamic { ////// Describes arguments in the dynamic binding process. /// ////// ArgumentCount - all inclusive number of arguments. /// ArgumentNames - names for those arguments that are named. /// /// Argument names match to the argument values in left to right order /// and last name corresponds to the last argument. /// /// Example: /// Foo(arg1, arg2, arg3, name1 = arg4, name2 = arg5, name3 = arg6) /// /// will correspond to: /// ArgumentCount: 6 /// ArgumentNames: {"name1", "name2", "name3"} /// public sealed class CallInfo { private readonly int _argCount; private readonly ReadOnlyCollection_argNames; /// /// Creates a new PositionalArgumentInfo. /// /// The number of arguments. /// The argument names. ///The new CallInfo public CallInfo(int argCount, params string[] argNames) : this(argCount, (IEnumerable)argNames) { } /// /// Creates a new CallInfo that represents arguments in the dynamic binding process. /// /// The number of arguments. /// The argument names. ///The new CallInfo public CallInfo(int argCount, IEnumerableargNames) { ContractUtils.RequiresNotNull(argNames, "argNames"); var argNameCol = argNames.ToReadOnly(); if (argCount < argNameCol.Count) throw Error.ArgCntMustBeGreaterThanNameCnt(); ContractUtils.RequiresNotNullItems(argNameCol, "argNames"); _argCount = argCount; _argNames = argNameCol; } /// /// The number of arguments. /// public int ArgumentCount { get { return _argCount; } } ////// The argument names. /// public ReadOnlyCollectionArgumentNames { get { return _argNames; } } /// /// Serves as a hash function for the current CallInfo. /// ///A hash code for the current CallInfo. public override int GetHashCode() { return _argCount ^ _argNames.ListHashCode(); } ////// Determines whether the specified CallInfo instance is considered equal to the current. /// /// The instance of CallInfo to compare with the current instance. ///true if the specified instance is equal to the current one otherwise, false. public override bool Equals(object obj) { var other = obj as CallInfo; return _argCount == other._argCount && _argNames.ListEquals(other._argNames); } } } // 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
- SqlCacheDependencySection.cs
- OptionalColumn.cs
- OLEDB_Util.cs
- BuildProvider.cs
- RelationalExpressions.cs
- QilParameter.cs
- CellCreator.cs
- XhtmlBasicLinkAdapter.cs
- StreamingContext.cs
- SubpageParaClient.cs
- WindowsSolidBrush.cs
- CustomError.cs
- TextFindEngine.cs
- SqlDataAdapter.cs
- PropertyGridEditorPart.cs
- GridLengthConverter.cs
- Bitmap.cs
- baseaxisquery.cs
- Scanner.cs
- ExtendedPropertyDescriptor.cs
- Knowncolors.cs
- QueryStringParameter.cs
- StringOutput.cs
- TextEditorThreadLocalStore.cs
- ParentUndoUnit.cs
- EntityDataSourceDataSelection.cs
- TextBox.cs
- DesignerAdapterAttribute.cs
- XpsDocumentEvent.cs
- DebugHandleTracker.cs
- EventProvider.cs
- TargetConverter.cs
- DesignerCatalogPartChrome.cs
- IDataContractSurrogate.cs
- GeneralTransform3D.cs
- XMLSchema.cs
- GeometryValueSerializer.cs
- AssemblyName.cs
- RequestStatusBarUpdateEventArgs.cs
- TemplateControlCodeDomTreeGenerator.cs
- VersionedStream.cs
- X509ChainPolicy.cs
- WorkflowApplicationException.cs
- Rule.cs
- Matrix.cs
- HttpListenerContext.cs
- ExpressionBinding.cs
- RadioButtonRenderer.cs
- IndexOutOfRangeException.cs
- ErrorStyle.cs
- TextSpanModifier.cs
- SafeProcessHandle.cs
- baseaxisquery.cs
- FieldCollectionEditor.cs
- MatrixTransform.cs
- NativeActivity.cs
- SQLByte.cs
- TypefaceMetricsCache.cs
- ListViewHitTestInfo.cs
- TrustManagerPromptUI.cs
- ArrayList.cs
- ComponentDispatcherThread.cs
- InvariantComparer.cs
- ErrorStyle.cs
- ExpandedWrapper.cs
- _AutoWebProxyScriptEngine.cs
- ValidationHelper.cs
- FormViewUpdatedEventArgs.cs
- ToolStripGripRenderEventArgs.cs
- SqlExpander.cs
- AnimationStorage.cs
- CharacterBuffer.cs
- StateChangeEvent.cs
- NamedPermissionSet.cs
- QilBinary.cs
- WaitHandleCannotBeOpenedException.cs
- DesignSurfaceManager.cs
- DSACryptoServiceProvider.cs
- PasswordBox.cs
- BindingNavigator.cs
- LineServicesCallbacks.cs
- MessageFilterTable.cs
- Unit.cs
- RegistryConfigurationProvider.cs
- Utils.cs
- Environment.cs
- MetaChildrenColumn.cs
- ToolStripGripRenderEventArgs.cs
- Configuration.cs
- TemplateControl.cs
- Compiler.cs
- XmlSchemaValidationException.cs
- HttpListenerContext.cs
- TextRangeSerialization.cs
- TableLayout.cs
- ButtonFieldBase.cs
- PathFigureCollectionConverter.cs
- DirectoryInfo.cs
- SplashScreenNativeMethods.cs
- ProtocolsSection.cs