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, IEnumerable argNames) {
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 ReadOnlyCollection ArgumentNames {
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
- XmlSchemaComplexContentRestriction.cs
- safelinkcollection.cs
- XmlIncludeAttribute.cs
- BaseTypeViewSchema.cs
- XmlSchemaDatatype.cs
- ControlIdConverter.cs
- SerializationAttributes.cs
- SendSecurityHeaderElementContainer.cs
- PriorityQueue.cs
- MatrixTransform3D.cs
- DateTimeOffsetConverter.cs
- TraceContextRecord.cs
- NullableConverter.cs
- WindowsIdentity.cs
- GridViewSortEventArgs.cs
- HttpInputStream.cs
- ResolveResponse.cs
- SharedPersonalizationStateInfo.cs
- RelatedView.cs
- _IPv4Address.cs
- TemplateXamlParser.cs
- Token.cs
- XmlLanguage.cs
- ToolStripComboBox.cs
- ProcessModelInfo.cs
- RootProfilePropertySettingsCollection.cs
- COM2ExtendedUITypeEditor.cs
- ProxyWebPartManager.cs
- NetCodeGroup.cs
- StandardToolWindows.cs
- COM2PropertyDescriptor.cs
- GuidConverter.cs
- ReferentialConstraintRoleElement.cs
- RelationalExpressions.cs
- NavigationExpr.cs
- XmlDataSourceView.cs
- ResourceProviderFactory.cs
- KerberosSecurityTokenParameters.cs
- GroupBoxAutomationPeer.cs
- HttpListener.cs
- QilFactory.cs
- MenuItemBinding.cs
- SqlConnection.cs
- BitmapEffectInputData.cs
- Page.cs
- SqlDataSourceQueryEditor.cs
- SmiContext.cs
- ExpressionPrefixAttribute.cs
- HttpCachePolicy.cs
- FlatButtonAppearance.cs
- QilParameter.cs
- FloaterBaseParagraph.cs
- ProcessModuleCollection.cs
- Renderer.cs
- RuntimeHelpers.cs
- SimpleRecyclingCache.cs
- ReadOnlyHierarchicalDataSourceView.cs
- StylusPointPropertyInfoDefaults.cs
- ResourceManagerWrapper.cs
- SQLMoney.cs
- RtfToXamlReader.cs
- DataObjectAttribute.cs
- IconBitmapDecoder.cs
- SkipQueryOptionExpression.cs
- Opcode.cs
- ZoneButton.cs
- RectKeyFrameCollection.cs
- XmlSchemaSimpleTypeRestriction.cs
- DtdParser.cs
- CodeMemberField.cs
- ServiceAuthorizationElement.cs
- SubpageParaClient.cs
- LabelEditEvent.cs
- XpsSerializerWriter.cs
- AmbientProperties.cs
- DateTimeValueSerializerContext.cs
- DataRecordObjectView.cs
- X509UI.cs
- StrongNameMembershipCondition.cs
- FloatUtil.cs
- ExpressionBuilder.cs
- ChannelSinkStacks.cs
- PluralizationServiceUtil.cs
- CodeTypeReferenceSerializer.cs
- Button.cs
- RoleManagerSection.cs
- QuaternionAnimation.cs
- HotSpotCollection.cs
- HtmlHead.cs
- DoubleLinkList.cs
- SoapExtensionReflector.cs
- SimpleExpression.cs
- StdValidatorsAndConverters.cs
- DBBindings.cs
- SiteMembershipCondition.cs
- EraserBehavior.cs
- SerializationSectionGroup.cs
- FontFaceLayoutInfo.cs
- Visual.cs
- WebControlAdapter.cs