Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Expressions / MultidimensionalArrayItemReference.cs / 1305376 / MultidimensionalArrayItemReference.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Expressions { using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime; using System.Runtime.Collections; using System.Runtime.Serialization; using System.Windows.Markup; [ContentProperty("Indices")] public sealed class MultidimensionalArrayItemReference: CodeActivity > { Collection > indices; [RequiredArgument] [DefaultValue(null)] public InArgument Array { get; set; } [DefaultValue(null)] public Collection > Indices { get { if (this.indices == null) { this.indices = new ValidatingCollection > { // disallow null values OnAddValidationCallback = item => { if (item == null) { throw FxTrace.Exception.ArgumentNull("item"); } }, }; } return this.indices; } } protected override void CacheMetadata(CodeActivityMetadata metadata) { if (this.Indices.Count == 0) { metadata.AddValidationError(SR.IndicesAreNeeded(this.GetType().Name, this.DisplayName)); } RuntimeArgument arrayArgument = new RuntimeArgument("Array", typeof(Array), ArgumentDirection.In, true); metadata.Bind(this.Array, arrayArgument); metadata.AddArgument(arrayArgument); for (int i = 0; i < this.Indices.Count; i++) { RuntimeArgument indexArgument = new RuntimeArgument("Index_" + i, typeof(int), ArgumentDirection.In, true); metadata.Bind(this.Indices[i], indexArgument); metadata.AddArgument(indexArgument); } RuntimeArgument resultArgument = new RuntimeArgument("Result", typeof(Location ), ArgumentDirection.Out); metadata.Bind(this.Result, resultArgument); metadata.AddArgument(resultArgument); } protected override Location Execute(CodeActivityContext context) { Array items = this.Array.Get(context); if (items == null) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.MemberCannotBeNull("Array", this.GetType().Name, this.DisplayName))); } Type realItemType = items.GetType().GetElementType(); if (!TypeHelper.AreTypesCompatible(typeof(TItem), realItemType)) { throw FxTrace.Exception.AsError(new InvalidCastException(SR.IncompatibleTypeForMultidimensionalArrayItemReference(typeof(TItem).Name, realItemType.Name))); } int[] itemIndex = new int[this.Indices.Count]; for (int i = 0; i < this.Indices.Count; i++) { itemIndex[i] = this.Indices[i].Get(context); } return new MultidimensionArrayLocation(items, itemIndex); } [DataContract] class MultidimensionArrayLocation : Location { [DataMember] Array array; [DataMember(EmitDefaultValue = false)] int[] indices; public MultidimensionArrayLocation(Array array, int[] indices) : base() { this.array = array; this.indices = indices; } public override TItem Value { get { return (TItem)this.array.GetValue(indices); } set { this.array.SetValue(value, indices); } } } } } // 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
- MulticastDelegate.cs
- MetabaseServerConfig.cs
- KeyMatchBuilder.cs
- cache.cs
- DataTableReader.cs
- Visual3D.cs
- JoinQueryOperator.cs
- cryptoapiTransform.cs
- BuildDependencySet.cs
- DbParameterCollection.cs
- Calendar.cs
- HttpAsyncResult.cs
- ColorMatrix.cs
- HttpCookieCollection.cs
- StatusBarAutomationPeer.cs
- DataGridViewCellCancelEventArgs.cs
- AsyncSerializedWorker.cs
- ScriptServiceAttribute.cs
- DetailsViewCommandEventArgs.cs
- CryptographicAttribute.cs
- EditCommandColumn.cs
- GridSplitter.cs
- OdbcReferenceCollection.cs
- FileClassifier.cs
- ClientData.cs
- DataRelation.cs
- FigureParagraph.cs
- IssuedTokenClientCredential.cs
- C14NUtil.cs
- RectAnimationClockResource.cs
- StrokeIntersection.cs
- IssuanceLicense.cs
- LogEntrySerializer.cs
- RegexRunner.cs
- ClassicBorderDecorator.cs
- ConnectionsZone.cs
- MeshGeometry3D.cs
- GroupJoinQueryOperator.cs
- DataGridItemCollection.cs
- ParameterCollection.cs
- Baml2006KnownTypes.cs
- StyleCollection.cs
- ManagedFilter.cs
- ArcSegment.cs
- ListViewHitTestInfo.cs
- MarkupCompilePass1.cs
- SHA512.cs
- TransformCollection.cs
- Perspective.cs
- WebPartDisplayModeCollection.cs
- TextElementCollection.cs
- BitmapDownload.cs
- EventArgs.cs
- SqlUDTStorage.cs
- LineProperties.cs
- Stacktrace.cs
- EntityConnectionStringBuilderItem.cs
- LineBreakRecord.cs
- TypeUsage.cs
- JsonGlobals.cs
- ProcessThread.cs
- CaseInsensitiveHashCodeProvider.cs
- VerticalAlignConverter.cs
- NativeMethods.cs
- EnterpriseServicesHelper.cs
- SamlAuthenticationClaimResource.cs
- RegexCompilationInfo.cs
- SqlProvider.cs
- SimpleTypeResolver.cs
- Schedule.cs
- PageWrapper.cs
- SelectorAutomationPeer.cs
- SafeRightsManagementHandle.cs
- CodeTypeReference.cs
- xml.cs
- EntityClientCacheKey.cs
- CellPartitioner.cs
- Transform.cs
- GenericsInstances.cs
- MissingManifestResourceException.cs
- RightsManagementPermission.cs
- GridToolTip.cs
- ProxyGenerator.cs
- OutKeywords.cs
- DesignSurfaceEvent.cs
- ImageCreator.cs
- OciEnlistContext.cs
- DataGridCommandEventArgs.cs
- Stacktrace.cs
- OracleParameterBinding.cs
- PropertyChangeTracker.cs
- ResetableIterator.cs
- TimeStampChecker.cs
- CustomValidator.cs
- BinaryNegotiation.cs
- OracleConnection.cs
- ListBoxChrome.cs
- UnauthorizedAccessException.cs
- Base64Stream.cs
- OdbcParameterCollection.cs