//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------ namespace System.Workflow.Activities { using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.ComponentModel.Design.Serialization; using System.Diagnostics.CodeAnalysis; using System.Drawing.Design; using System.Net.Security; using System.Reflection; using System.Workflow.Activities.Design; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Serialization; using System.Collections.Generic; [TypeConverter(typeof(ServiceOperationInfoTypeConverter))] [Editor(typeof(ServiceOperationUIEditor), typeof(UITypeEditor))] [DesignerSerializer(typeof(DependencyObjectCodeDomSerializer), typeof(CodeDomSerializer))] [Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")] public abstract class OperationInfoBase : DependencyObject { [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")] internal static readonly DependencyProperty MethodInfoProperty = DependencyProperty.Register("MethodInfo", typeof(MethodInfo), typeof(OperationInfoBase), new PropertyMetadata(null, DependencyPropertyOptions.NonSerialized)); [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")] internal static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(OperationInfoBase), new PropertyMetadata(null, DependencyPropertyOptions.Metadata)); [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")] internal static readonly DependencyProperty PrincipalPermissionNameProperty = DependencyProperty.Register("PrincipalPermissionName", typeof(string), typeof(OperationInfoBase), new PropertyMetadata(null, DependencyPropertyOptions.Metadata)); [SuppressMessage("Microsoft.Security", "CA2104:DoNotDeclareReadOnlyMutableReferenceTypes")] internal static readonly DependencyProperty PrincipalPermissionRoleProperty = DependencyProperty.Register("PrincipalPermissionRole", typeof(string), typeof(OperationInfoBase), new PropertyMetadata(null, DependencyPropertyOptions.Metadata)); public virtual string Name { get { return (string) this.GetValue(OperationInfoBase.NameProperty); } set { this.SetValue(OperationInfoBase.NameProperty, value); } } [DefaultValue(null)] public virtual string PrincipalPermissionName { get { return (string) this.GetValue(OperationInfoBase.PrincipalPermissionNameProperty); } set { this.SetValue(OperationInfoBase.PrincipalPermissionNameProperty, value); } } [DefaultValue(null)] public virtual string PrincipalPermissionRole { get { return (string) this.GetValue(OperationInfoBase.PrincipalPermissionRoleProperty); } set { this.SetValue(OperationInfoBase.PrincipalPermissionRoleProperty, value); } } internal bool IsReadOnly { get { return !this.DesignMode; } } public virtual OperationInfoBase Clone() { OperationInfoBase clonedOperation = (OperationInfoBase) Activator.CreateInstance(this.GetType()); clonedOperation.Name = this.Name; clonedOperation.PrincipalPermissionName = this.PrincipalPermissionName; clonedOperation.PrincipalPermissionRole = this.PrincipalPermissionRole; return clonedOperation; } public override bool Equals(object obj) { OperationInfoBase operationInfo = obj as OperationInfoBase; if (operationInfo == null) { return false; } if (String.Compare(operationInfo.Name, this.Name, StringComparison.Ordinal) != 0) { return false; } if (String.Compare(operationInfo.PrincipalPermissionName, this.PrincipalPermissionName, StringComparison.Ordinal) != 0) { return false; } if (String.Compare(operationInfo.PrincipalPermissionRole, this.PrincipalPermissionRole, StringComparison.Ordinal) != 0) { return false; } return true; } public override int GetHashCode() { return base.GetHashCode(); } internal protected abstract string GetContractFullName(IServiceProvider provider); internal protected abstract Type GetContractType(IServiceProvider provider); internal protected abstract bool GetIsOneWay(IServiceProvider provider); internal protected abstract MethodInfo GetMethodInfo(IServiceProvider provider); internal protected abstract OperationParameterInfoCollection GetParameters(IServiceProvider provider); } }