//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities { using System; using System.Activities.Validation; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Runtime; // DelegateArgument is the XAML-based construct. RuntimeDelegateArgument is a binding construct to store the value [Fx.Tag.XamlVisible(false)] public sealed class RuntimeDelegateArgument { public RuntimeDelegateArgument(string name, Type type, ArgumentDirection direction, DelegateArgument boundArgument) { if (string.IsNullOrEmpty(name)) { throw FxTrace.Exception.ArgumentNullOrEmpty("name"); } if (type == null) { throw FxTrace.Exception.ArgumentNull("type"); } ArgumentDirectionHelper.Validate(direction, "direction"); if (boundArgument != null) { // Validations that the bound argument matches are done // in CacheMetadata for ActivityDelegate. boundArgument.Bind(this); } this.Name = name; this.Type = type; this.Direction = direction; this.BoundArgument = boundArgument; } public string Name { get; private set; } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.PropertyNamesShouldNotMatchGetMethods, Justification = "Workflow normalizes on Type for Type properties")] public Type Type { get; private set; } public ArgumentDirection Direction { get; private set; } public DelegateArgument BoundArgument { get; private set; } } }