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
- ProviderCommandInfoUtils.cs
- DataGridViewRowsAddedEventArgs.cs
- RolePrincipal.cs
- Selection.cs
- TextServicesCompartmentContext.cs
- TextFormatterImp.cs
- RuleAttributes.cs
- TypeNameConverter.cs
- QuarticEase.cs
- CompositeScriptReference.cs
- GroupStyle.cs
- AppliedDeviceFiltersEditor.cs
- ImpersonationContext.cs
- DoubleConverter.cs
- XPathParser.cs
- WinInet.cs
- HotSpot.cs
- ToolStripLabel.cs
- RadioButtonBaseAdapter.cs
- FormsAuthenticationModule.cs
- FontInfo.cs
- ProviderConnectionPointCollection.cs
- GroupLabel.cs
- CompositeCollection.cs
- HttpConfigurationSystem.cs
- SchemaSetCompiler.cs
- SecurityTokenResolver.cs
- BamlCollectionHolder.cs
- ComboBox.cs
- XomlCompilerError.cs
- FontCollection.cs
- FacetChecker.cs
- ComplexPropertyEntry.cs
- SqlBuilder.cs
- SystemTcpConnection.cs
- RowSpanVector.cs
- PhonemeEventArgs.cs
- CacheMemory.cs
- TemplateXamlParser.cs
- LinkedResource.cs
- TextRangeEditLists.cs
- WhitespaceRule.cs
- columnmapkeybuilder.cs
- ProvidersHelper.cs
- CommaDelimitedStringAttributeCollectionConverter.cs
- IndexingContentUnit.cs
- parserscommon.cs
- OleStrCAMarshaler.cs
- CodeAttachEventStatement.cs
- DataGridViewTextBoxCell.cs
- OutputCacheProfileCollection.cs
- OutputCacheSettings.cs
- CounterSampleCalculator.cs
- PowerStatus.cs
- ResXResourceSet.cs
- Transform3DGroup.cs
- SystemThemeKey.cs
- precedingsibling.cs
- TypographyProperties.cs
- PropertyConverter.cs
- PaperSource.cs
- TextElementCollection.cs
- ClientTargetSection.cs
- DataGridViewDataErrorEventArgs.cs
- PointConverter.cs
- SortExpressionBuilder.cs
- SmtpDigestAuthenticationModule.cs
- HtmlObjectListAdapter.cs
- ClockGroup.cs
- RtType.cs
- ConfigXmlElement.cs
- SelectionRangeConverter.cs
- ObjectSpanRewriter.cs
- HttpRequestCacheValidator.cs
- Vector.cs
- RubberbandSelector.cs
- ContainerParaClient.cs
- FileInfo.cs
- ByteStreamGeometryContext.cs
- MarshalByValueComponent.cs
- SecurityException.cs
- LocatorPartList.cs
- Models.cs
- PersonalizationState.cs
- ToolStripPanelRow.cs
- FtpWebResponse.cs
- BitmapImage.cs
- Compiler.cs
- ContainerActivationHelper.cs
- TransportContext.cs
- log.cs
- Header.cs
- DataProtection.cs
- ArrayWithOffset.cs
- AtlasWeb.Designer.cs
- ChildDocumentBlock.cs
- RoleGroupCollection.cs
- SiteMapDataSourceDesigner.cs
- SafeSystemMetrics.cs
- XmlNamespaceMapping.cs