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
- DataPagerFieldItem.cs
- CodeGroup.cs
- LoopExpression.cs
- updateconfighost.cs
- EntityContainerRelationshipSet.cs
- SqlServer2KCompatibilityAnnotation.cs
- Argument.cs
- Part.cs
- HostDesigntimeLicenseContext.cs
- FixedTextView.cs
- FrugalList.cs
- EventArgs.cs
- TextCollapsingProperties.cs
- ClientOptions.cs
- DataGridViewLinkColumn.cs
- DataControlCommands.cs
- CharStorage.cs
- EncoderBestFitFallback.cs
- fixedPageContentExtractor.cs
- ItemDragEvent.cs
- AccessControlEntry.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- TypedServiceChannelBuilder.cs
- LifetimeMonitor.cs
- HelpInfo.cs
- RelationshipWrapper.cs
- RoleGroupCollection.cs
- HttpWebRequestElement.cs
- Statements.cs
- XmlSecureResolver.cs
- ToolZone.cs
- CheckBox.cs
- DataGridViewToolTip.cs
- Visual.cs
- XmlMtomWriter.cs
- UserControlAutomationPeer.cs
- ISFTagAndGuidCache.cs
- SqlConnectionFactory.cs
- BrushConverter.cs
- ConfigXmlElement.cs
- XPathNodeList.cs
- SchemaComplexType.cs
- SourceExpressionException.cs
- Tokenizer.cs
- TableRowsCollectionEditor.cs
- CustomCategoryAttribute.cs
- EntityDataSourceContainerNameItem.cs
- DataControlLinkButton.cs
- MethodAccessException.cs
- UnsafeNetInfoNativeMethods.cs
- Propagator.cs
- AssociationTypeEmitter.cs
- DependencyObjectCodeDomSerializer.cs
- ReaderWriterLock.cs
- StatusBarAutomationPeer.cs
- WebPart.cs
- NativeMethods.cs
- ThrowHelper.cs
- QilGeneratorEnv.cs
- Int32CollectionConverter.cs
- LinkDescriptor.cs
- HtmlInputHidden.cs
- mactripleDES.cs
- RuleEngine.cs
- DataViewManagerListItemTypeDescriptor.cs
- RankException.cs
- DependentTransaction.cs
- XmlSchemaValidator.cs
- MethodSet.cs
- UnicastIPAddressInformationCollection.cs
- XmlCDATASection.cs
- WhitespaceRule.cs
- NullToBooleanConverter.cs
- PropertyOverridesTypeEditor.cs
- ISAPIWorkerRequest.cs
- StateMachine.cs
- XmlAnyElementAttribute.cs
- CustomCategoryAttribute.cs
- ContentType.cs
- PropertyItemInternal.cs
- SaveWorkflowAsyncResult.cs
- EraserBehavior.cs
- DataFormats.cs
- Error.cs
- Preprocessor.cs
- RuntimeEnvironment.cs
- HandleExceptionArgs.cs
- ProfileParameter.cs
- SerializationFieldInfo.cs
- ChannelRequirements.cs
- RegistryDataKey.cs
- DataPagerCommandEventArgs.cs
- SimpleExpression.cs
- UnknownBitmapDecoder.cs
- _SpnDictionary.cs
- TextSpan.cs
- HttpWebRequest.cs
- WebDescriptionAttribute.cs
- SqlDataAdapter.cs
- SubtreeProcessor.cs