e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
231 lines
6.8 KiB
C#
231 lines
6.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
namespace System.Workflow.ComponentModel
|
|
{
|
|
[Flags]
|
|
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
|
|
public enum DependencyPropertyOptions : byte
|
|
{
|
|
Default = 1,
|
|
ReadOnly = 2,
|
|
Optional = 4,
|
|
Metadata = 8,
|
|
NonSerialized = 16,
|
|
DelegateProperty = 32
|
|
}
|
|
|
|
|
|
//overrides so you dont need to do inheritence
|
|
public delegate object GetValueOverride(DependencyObject d);
|
|
public delegate void SetValueOverride(DependencyObject d, object value);
|
|
|
|
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
|
|
public class PropertyMetadata
|
|
{
|
|
private Attribute[] attributes = null;
|
|
private object defaultValue = null;
|
|
private DependencyPropertyOptions options = DependencyPropertyOptions.Default;
|
|
private bool propertySealed = false;
|
|
|
|
private GetValueOverride getValueOverride = null;
|
|
private SetValueOverride setValueOverride = null;
|
|
private bool shouldAlwaysCallOverride = false;
|
|
|
|
public PropertyMetadata() { }
|
|
|
|
public PropertyMetadata(object defaultValue)
|
|
: this(defaultValue, default(DependencyPropertyOptions))
|
|
{
|
|
|
|
}
|
|
|
|
public PropertyMetadata(DependencyPropertyOptions options)
|
|
: this(null, options)
|
|
{
|
|
|
|
}
|
|
public PropertyMetadata(object defaultValue, DependencyPropertyOptions options)
|
|
: this(defaultValue, options, null, null, new Attribute[] { })
|
|
{
|
|
|
|
}
|
|
public PropertyMetadata(object defaultValue, params Attribute[] attributes)
|
|
: this(defaultValue, default(DependencyPropertyOptions), null, null, attributes)
|
|
{
|
|
|
|
}
|
|
public PropertyMetadata(object defaultValue, DependencyPropertyOptions options, params Attribute[] attributes)
|
|
: this(defaultValue, options, null, null, attributes)
|
|
{
|
|
|
|
}
|
|
public PropertyMetadata(DependencyPropertyOptions options, params Attribute[] attributes)
|
|
: this(null, options, null, null, attributes)
|
|
{
|
|
|
|
}
|
|
public PropertyMetadata(params Attribute[] attributes)
|
|
: this(null, default(DependencyPropertyOptions), null, null, attributes)
|
|
{
|
|
|
|
}
|
|
|
|
public PropertyMetadata(object defaultValue, DependencyPropertyOptions options, GetValueOverride getValueOverride, SetValueOverride setValueOverride)
|
|
:
|
|
this(defaultValue, options, getValueOverride, setValueOverride, new Attribute[] { })
|
|
{
|
|
|
|
}
|
|
|
|
public PropertyMetadata(object defaultValue, DependencyPropertyOptions options, GetValueOverride getValueOverride, SetValueOverride setValueOverride, params Attribute[] attributes)
|
|
: this(defaultValue, options, getValueOverride, setValueOverride, false, attributes)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
internal PropertyMetadata(object defaultValue, DependencyPropertyOptions options, GetValueOverride getValueOverride, SetValueOverride setValueOverride, bool shouldAlwaysCallOverride, params Attribute[] attributes)
|
|
{
|
|
this.defaultValue = defaultValue;
|
|
this.options = options;
|
|
this.getValueOverride = getValueOverride;
|
|
this.setValueOverride = setValueOverride;
|
|
this.shouldAlwaysCallOverride = shouldAlwaysCallOverride;
|
|
this.attributes = attributes;
|
|
}
|
|
|
|
public Attribute[] GetAttributes()
|
|
{
|
|
return GetAttributes(null);
|
|
}
|
|
|
|
public Attribute[] GetAttributes(Type attributeType)
|
|
{
|
|
List<Attribute> attributes = new List<Attribute>();
|
|
if (this.attributes != null)
|
|
{
|
|
foreach (Attribute attribute in this.attributes)
|
|
{
|
|
if (attribute == null)
|
|
continue;
|
|
|
|
if (attributeType == null || attribute.GetType() == attributeType)
|
|
attributes.Add(attribute);
|
|
}
|
|
}
|
|
return attributes.ToArray();
|
|
}
|
|
|
|
public object DefaultValue
|
|
{
|
|
get
|
|
{
|
|
return this.defaultValue;
|
|
}
|
|
set
|
|
{
|
|
if (this.propertySealed)
|
|
throw new InvalidOperationException(SR.GetString(SR.Error_SealedPropertyMetadata));
|
|
|
|
this.defaultValue = value;
|
|
}
|
|
}
|
|
public DependencyPropertyOptions Options
|
|
{
|
|
get
|
|
{
|
|
return this.options;
|
|
}
|
|
set
|
|
{
|
|
if (this.propertySealed)
|
|
throw new InvalidOperationException(SR.GetString(SR.Error_SealedPropertyMetadata));
|
|
|
|
this.options = value;
|
|
}
|
|
}
|
|
|
|
public bool IsMetaProperty
|
|
{
|
|
get
|
|
{
|
|
return (this.options & DependencyPropertyOptions.Metadata) > 0;
|
|
}
|
|
}
|
|
public bool IsNonSerialized
|
|
{
|
|
get
|
|
{
|
|
return (this.options & DependencyPropertyOptions.NonSerialized) > 0;
|
|
}
|
|
}
|
|
|
|
public bool IsReadOnly
|
|
{
|
|
get
|
|
{
|
|
return (this.options & DependencyPropertyOptions.ReadOnly) > 0;
|
|
}
|
|
}
|
|
|
|
public GetValueOverride GetValueOverride
|
|
{
|
|
get
|
|
{
|
|
return this.getValueOverride;
|
|
}
|
|
set
|
|
{
|
|
if (this.propertySealed)
|
|
throw new InvalidOperationException(SR.GetString(SR.Error_SealedPropertyMetadata));
|
|
|
|
this.getValueOverride = value;
|
|
}
|
|
}
|
|
public SetValueOverride SetValueOverride
|
|
{
|
|
get
|
|
{
|
|
return this.setValueOverride;
|
|
}
|
|
set
|
|
{
|
|
if (this.propertySealed)
|
|
throw new InvalidOperationException(SR.GetString(SR.Error_SealedPropertyMetadata));
|
|
|
|
this.setValueOverride = value;
|
|
}
|
|
}
|
|
|
|
protected virtual void OnApply(DependencyProperty dependencyProperty, Type targetType)
|
|
{
|
|
}
|
|
|
|
protected bool IsSealed
|
|
{
|
|
get
|
|
{
|
|
return this.propertySealed;
|
|
}
|
|
}
|
|
|
|
internal bool ShouldAlwaysCallOverride
|
|
{
|
|
get
|
|
{
|
|
return shouldAlwaysCallOverride;
|
|
}
|
|
}
|
|
|
|
internal void Seal(DependencyProperty dependencyProperty, Type targetType)
|
|
{
|
|
OnApply(dependencyProperty, targetType);
|
|
|
|
this.propertySealed = true;
|
|
}
|
|
}
|
|
}
|