File: System\Workflow\Activities\OperationParameterInfo.cs
Project: ndp\cdf\src\NetFx35\System.WorkflowServices\System.WorkflowServices.csproj (System.WorkflowServices)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
 
namespace System.Workflow.Activities
{
    using System;
    using System.ComponentModel;
    using System.ComponentModel.Design.Serialization;
    using System.Drawing.Design;
    using System.Diagnostics.CodeAnalysis;
    using System.Net.Security;
    using System.Reflection;
    using System.ServiceModel;
    using System.Workflow.ComponentModel;
    using System.Workflow.ComponentModel.Compiler;
    using System.Workflow.ComponentModel.Serialization;
 
    [Browsable(true)]
    [DesignerSerializer(typeof(DependencyObjectCodeDomSerializer), typeof(CodeDomSerializer))]
    [Obsolete("The System.Workflow.* types are deprecated.  Instead, please use the new types from System.Activities.*")]
    public sealed class OperationParameterInfo : DependencyObject
    {
        [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")]
        public static readonly DependencyProperty AttributesProperty =
            DependencyProperty.Register("Attributes",
            typeof(ParameterAttributes), typeof(OperationParameterInfo),
            new PropertyMetadata(DependencyPropertyOptions.Metadata));
 
        [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")]
        public static readonly DependencyProperty NameProperty =
            DependencyProperty.Register("Name",
            typeof(string), typeof(OperationParameterInfo),
            new PropertyMetadata(null, DependencyPropertyOptions.Metadata));
 
        [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")]
        public static readonly DependencyProperty ParameterTypeProperty =
            DependencyProperty.Register("ParameterType",
            typeof(Type), typeof(OperationParameterInfo),
            new PropertyMetadata(typeof(void), DependencyPropertyOptions.Metadata));
 
        [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")]
        public static readonly DependencyProperty PositionProperty =
            DependencyProperty.Register("Position",
            typeof(int), typeof(OperationParameterInfo),
            new PropertyMetadata(-1, DependencyPropertyOptions.Metadata));
 
        public OperationParameterInfo()
        {
        }
 
        public OperationParameterInfo(string parameterName)
        {
            SetValue(NameProperty, parameterName);
        }
 
        internal OperationParameterInfo(ParameterInfo parameter)
        {
            if (parameter == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("parameter");
            }
 
            SetValue(OperationParameterInfo.NameProperty, parameter.Name);
            SetValue(OperationParameterInfo.PositionProperty, parameter.Position);
            SetValue(OperationParameterInfo.AttributesProperty, parameter.Attributes);
            SetValue(OperationParameterInfo.ParameterTypeProperty, parameter.ParameterType);
        }
 
        public ParameterAttributes Attributes
        {
            get
            {
                return (ParameterAttributes) GetValue(AttributesProperty);
            }
            set
            {
                SetValue(AttributesProperty, value);
            }
        }
 
        public bool IsIn
        {
            get
            {
                return ((this.Attributes & ParameterAttributes.In) != 0);
            }
        }
 
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        public bool IsLcid
        {
            get
            {
                return ((this.Attributes & ParameterAttributes.Lcid) != 0);
            }
        }
 
        public bool IsOptional
        {
            get
            {
                return ((this.Attributes & ParameterAttributes.Optional) != 0);
            }
        }
 
        public bool IsOut
        {
            get
            {
                return ((this.Attributes & ParameterAttributes.Out) != 0);
            }
        }
 
        [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly")]
        public bool IsRetval
        {
            get
            {
                return ((this.Attributes & ParameterAttributes.Retval) != 0);
            }
        }
 
        public string Name
        {
            get
            {
                return (string) GetValue(NameProperty);
            }
            set
            {
                SetValue(NameProperty, value);
            }
        }
 
        public Type ParameterType
        {
            get
            {
                return (Type) GetValue(ParameterTypeProperty);
            }
            set
            {
                SetValue(ParameterTypeProperty, value);
            }
        }
 
        public int Position
        {
            get
            {
                return (int) GetValue(PositionProperty);
            }
            set
            {
                SetValue(PositionProperty, value);
            }
        }
 
        public OperationParameterInfo Clone()
        {
            OperationParameterInfo clonedParameter = new OperationParameterInfo();
            clonedParameter.Name = this.Name;
            clonedParameter.Attributes = this.Attributes;
            clonedParameter.Position = this.Position;
            clonedParameter.ParameterType = this.ParameterType;
 
            return clonedParameter;
        }
 
        public override bool Equals(object obj)
        {
            OperationParameterInfo parameter = obj as OperationParameterInfo;
            if (parameter == null)
            {
                return false;
            }
            if (String.Compare(parameter.Name, this.Name, StringComparison.Ordinal) != 0)
            {
                return false;
            }
            if (parameter.Attributes != this.Attributes)
            {
                return false;
            }
            if (parameter.Position != this.Position)
            {
                return false;
            }
            if (parameter.ParameterType != this.ParameterType)
            {
                return false;
            }
 
            return true;
        }
 
        public override int GetHashCode()
        {
            return base.GetHashCode();
        }
    }
}