Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / IndexerHelper.cs / 1305376 / IndexerHelper.cs
//----------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//---------------------------------------------------------------
namespace System.Activities.Expressions
{
using System.Activities.Validation;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Runtime;
using System.Collections.ObjectModel;
using System.Reflection;
static class IndexerHelper
{
public static void OnGetArguments(Collection indices, OutArgument> result, CodeActivityMetadata metadata)
{
for (int i = 0; i < indices.Count; i++)
{
RuntimeArgument indexArgument = new RuntimeArgument("Index" + i, indices[i].ArgumentType, ArgumentDirection.In, true);
metadata.Bind(indices[i], indexArgument);
metadata.AddArgument(indexArgument);
}
RuntimeArgument resultArgument = new RuntimeArgument("Result", typeof(Location), ArgumentDirection.Out);
metadata.Bind(result, resultArgument);
metadata.AddArgument(resultArgument);
}
public static void CacheMethod(Collection indices, ref MethodInfo getMethod, ref MethodInfo setMethod)
{
Type[] getTypes = new Type[indices.Count];
for (int i = 0; i < indices.Count; i++)
{
getTypes[i] = indices[i].ArgumentType;
}
getMethod = typeof(TOperand).GetMethod("get_Item", getTypes);
if (getMethod != null && !getMethod.IsSpecialName)
{
getMethod = null;
}
Type[] setTypes = new Type[indices.Count + 1];
for (int i = 0; i < indices.Count; i++)
{
setTypes[i] = indices[i].ArgumentType;
}
setTypes[setTypes.Length - 1] = typeof(TItem);
setMethod = typeof(TOperand).GetMethod("set_Item", setTypes);
if (setMethod != null && !setMethod.IsSpecialName)
{
setMethod = null;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WmlSelectionListAdapter.cs
- ComUdtElementCollection.cs
- Compiler.cs
- DataAdapter.cs
- WmlCommandAdapter.cs
- ThaiBuddhistCalendar.cs
- datacache.cs
- SchemaNames.cs
- IApplicationTrustManager.cs
- DataGridColumnCollection.cs
- VirtualPath.cs
- HttpRuntime.cs
- HostedBindingBehavior.cs
- XsltInput.cs
- GridViewAutomationPeer.cs
- controlskin.cs
- HttpValueCollection.cs
- SignatureToken.cs
- DependencySource.cs
- EntityDataSourceQueryBuilder.cs
- sitestring.cs
- RelationshipFixer.cs
- IdleTimeoutMonitor.cs
- HandlerFactoryWrapper.cs
- TypeDescriptionProvider.cs
- LocalizableResourceBuilder.cs
- ExtensionDataReader.cs
- clipboard.cs
- EpmCustomContentWriterNodeData.cs
- PropertyCollection.cs
- HttpVersion.cs
- ExpressionList.cs
- DateTimeOffset.cs
- UnionCodeGroup.cs
- ScaleTransform.cs
- KnowledgeBase.cs
- EmptyCollection.cs
- CompoundFileStorageReference.cs
- VirtualizingPanel.cs
- MatrixValueSerializer.cs
- ClientCredentials.cs
- WindowsRegion.cs
- XmlNodeReader.cs
- HyperLinkStyle.cs
- WebPartConnectionCollection.cs
- Nodes.cs
- ProfileParameter.cs
- RewritingValidator.cs
- HighContrastHelper.cs
- FaultCallbackWrapper.cs
- Exception.cs
- Config.cs
- MethodExpr.cs
- UpdateException.cs
- WindowsAuthenticationEventArgs.cs
- SqlCharStream.cs
- RowType.cs
- TableItemPattern.cs
- ExtensibleSyndicationObject.cs
- Italic.cs
- RoutedEventValueSerializer.cs
- PackagingUtilities.cs
- AudioBase.cs
- AlphabeticalEnumConverter.cs
- Native.cs
- path.cs
- XomlSerializationHelpers.cs
- PointAnimationClockResource.cs
- ToolStripItem.cs
- PermissionSetTriple.cs
- RtfToXamlLexer.cs
- NamedObject.cs
- Point3DKeyFrameCollection.cs
- FastPropertyAccessor.cs
- CngKeyBlobFormat.cs
- CalendarDataBindingHandler.cs
- FamilyTypeface.cs
- DataControlImageButton.cs
- ApplicationDirectoryMembershipCondition.cs
- HtmlElementCollection.cs
- ToolStripButton.cs
- XmlTextWriter.cs
- DataGridColumnsPage.cs
- SafeRightsManagementHandle.cs
- MetadataItemSerializer.cs
- ErasingStroke.cs
- ObjectSet.cs
- WebPartDescriptionCollection.cs
- TraceData.cs
- AmbiguousMatchException.cs
- WebControlsSection.cs
- EmptyElement.cs
- DoubleLinkList.cs
- WebPartTransformerAttribute.cs
- returneventsaver.cs
- NonParentingControl.cs
- PostBackOptions.cs
- BitmapEncoder.cs
- EventlogProvider.cs
- XamlPointCollectionSerializer.cs