//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Markup; using System.Diagnostics.CodeAnalysis; using System.Runtime; using System.Collections.ObjectModel; [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldNotHaveIncorrectSuffix, Justification = "Optimizing for XAML naming.")] [ContentProperty("Collection")] public sealed class AddToCollection : CodeActivity { [RequiredArgument] [DefaultValue(null)] public InArgument> Collection { get; set; } [RequiredArgument] [DefaultValue(null)] public InArgument Item { get; set; } protected override void CacheMetadata(CodeActivityMetadata metadata) { Collection arguments = new Collection(); RuntimeArgument collectionArgument = new RuntimeArgument("Collection", typeof(ICollection), ArgumentDirection.In, true); metadata.Bind(this.Collection, collectionArgument); arguments.Add(collectionArgument); RuntimeArgument itemArgument = new RuntimeArgument("Item", typeof(T), ArgumentDirection.In, true); metadata.Bind(this.Item, itemArgument); arguments.Add(itemArgument); metadata.SetArgumentsCollection(arguments); } protected override void Execute(CodeActivityContext context) { ICollection collection = this.Collection.Get(context); if (collection == null) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.CollectionActivityRequiresCollection(this.DisplayName))); } T item = this.Item.Get(context); collection.Add(item); } } }