124 lines
5.3 KiB
C#
124 lines
5.3 KiB
C#
//------------------------------------------------------------
|
|
// 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);
|
|
}
|
|
}
|