Browse Source

Merge pull request #5160 from AvaloniaUI/rename-propertymetadata-class

Rename propertymetadata class
stable/0.10.0
Dan Walmsley 6 years ago
committed by GitHub
parent
commit
b9eb08d250
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      src/Avalonia.Base/ApiCompatBaseline.txt
  2. 24
      src/Avalonia.Base/AvaloniaProperty.cs
  3. 8
      src/Avalonia.Base/AvaloniaPropertyMetadata.cs
  4. 6
      src/Avalonia.Base/AvaloniaProperty`1.cs
  5. 6
      src/Avalonia.Base/DirectPropertyBase.cs
  6. 4
      src/Avalonia.Base/DirectPropertyMetadata`1.cs
  7. 4
      src/Avalonia.Base/StyledPropertyMetadata`1.cs
  8. 22
      tests/Avalonia.Base.UnitTests/AvaloniaPropertyTests.cs

18
src/Avalonia.Base/ApiCompatBaseline.txt

@ -1,4 +1,20 @@
Compat issues with assembly Avalonia.Base: Compat issues with assembly Avalonia.Base:
MembersMustExist : Member 'protected void Avalonia.AvaloniaProperty..ctor(Avalonia.AvaloniaProperty, System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.AvaloniaProperty..ctor(System.String, System.Type, System.Type, Avalonia.PropertyMetadata, System.Action<Avalonia.IAvaloniaObject, System.Boolean>)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'public Avalonia.PropertyMetadata Avalonia.AvaloniaProperty.GetMetadata(System.Type)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'public Avalonia.PropertyMetadata Avalonia.AvaloniaProperty.GetMetadata<T>()' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.AvaloniaProperty.OverrideMetadata(System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.AvaloniaProperty<TValue>..ctor(Avalonia.AvaloniaProperty, System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.AvaloniaProperty<TValue>..ctor(Avalonia.AvaloniaProperty<TValue>, System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.AvaloniaProperty<TValue>..ctor(System.String, System.Type, Avalonia.PropertyMetadata, System.Action<Avalonia.IAvaloniaObject, System.Boolean>)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.DirectPropertyBase<TValue>..ctor(Avalonia.AvaloniaProperty, System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.DirectPropertyBase<TValue>..ctor(Avalonia.DirectPropertyBase<TValue>, System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'protected void Avalonia.DirectPropertyBase<TValue>..ctor(System.String, System.Type, Avalonia.PropertyMetadata)' does not exist in the implementation but it does exist in the contract.
CannotRemoveBaseTypeOrInterface : Type 'Avalonia.DirectPropertyMetadata<TValue>' does not inherit from base type 'Avalonia.PropertyMetadata' in the implementation but it does in the contract.
MembersMustExist : Member 'public void Avalonia.DirectPropertyMetadata<TValue>.Merge(Avalonia.PropertyMetadata, Avalonia.AvaloniaProperty)' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'Avalonia.PropertyMetadata' does not exist in the implementation but it does exist in the contract.
CannotRemoveBaseTypeOrInterface : Type 'Avalonia.StyledPropertyMetadata<TValue>' does not inherit from base type 'Avalonia.PropertyMetadata' in the implementation but it does in the contract.
MembersMustExist : Member 'public void Avalonia.StyledPropertyMetadata<TValue>.Merge(Avalonia.PropertyMetadata, Avalonia.AvaloniaProperty)' does not exist in the implementation but it does exist in the contract.
MembersMustExist : Member 'public void Avalonia.Threading.AvaloniaSynchronizationContext..ctor(Avalonia.Threading.AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider)' does not exist in the implementation but it does exist in the contract. MembersMustExist : Member 'public void Avalonia.Threading.AvaloniaSynchronizationContext..ctor(Avalonia.Threading.AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider)' does not exist in the implementation but it does exist in the contract.
TypesMustExist : Type 'Avalonia.Threading.AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider' does not exist in the implementation but it does exist in the contract. TypesMustExist : Type 'Avalonia.Threading.AvaloniaSynchronizationContext.INonPumpingPlatformWaitProvider' does not exist in the implementation but it does exist in the contract.
Total Issues: 2 Total Issues: 18

24
src/Avalonia.Base/AvaloniaProperty.cs

@ -17,9 +17,9 @@ namespace Avalonia
public static readonly object UnsetValue = new UnsetValueType(); public static readonly object UnsetValue = new UnsetValueType();
private static int s_nextId; private static int s_nextId;
private readonly PropertyMetadata _defaultMetadata; private readonly AvaloniaPropertyMetadata _defaultMetadata;
private readonly Dictionary<Type, PropertyMetadata> _metadata; private readonly Dictionary<Type, AvaloniaPropertyMetadata> _metadata;
private readonly Dictionary<Type, PropertyMetadata> _metadataCache = new Dictionary<Type, PropertyMetadata>(); private readonly Dictionary<Type, AvaloniaPropertyMetadata> _metadataCache = new Dictionary<Type, AvaloniaPropertyMetadata>();
private bool _hasMetadataOverrides; private bool _hasMetadataOverrides;
@ -35,7 +35,7 @@ namespace Avalonia
string name, string name,
Type valueType, Type valueType,
Type ownerType, Type ownerType,
PropertyMetadata metadata, AvaloniaPropertyMetadata metadata,
Action<IAvaloniaObject, bool> notifying = null) Action<IAvaloniaObject, bool> notifying = null)
{ {
Contract.Requires<ArgumentNullException>(name != null); Contract.Requires<ArgumentNullException>(name != null);
@ -48,7 +48,7 @@ namespace Avalonia
throw new ArgumentException("'name' may not contain periods."); throw new ArgumentException("'name' may not contain periods.");
} }
_metadata = new Dictionary<Type, PropertyMetadata>(); _metadata = new Dictionary<Type, AvaloniaPropertyMetadata>();
Name = name; Name = name;
PropertyType = valueType; PropertyType = valueType;
@ -69,12 +69,12 @@ namespace Avalonia
protected AvaloniaProperty( protected AvaloniaProperty(
AvaloniaProperty source, AvaloniaProperty source,
Type ownerType, Type ownerType,
PropertyMetadata metadata) AvaloniaPropertyMetadata metadata)
{ {
Contract.Requires<ArgumentNullException>(source != null); Contract.Requires<ArgumentNullException>(source != null);
Contract.Requires<ArgumentNullException>(ownerType != null); Contract.Requires<ArgumentNullException>(ownerType != null);
_metadata = new Dictionary<Type, PropertyMetadata>(); _metadata = new Dictionary<Type, AvaloniaPropertyMetadata>();
Name = source.Name; Name = source.Name;
PropertyType = source.PropertyType; PropertyType = source.PropertyType;
@ -419,7 +419,7 @@ namespace Avalonia
/// <returns> /// <returns>
/// The property metadata. /// The property metadata.
/// </returns> /// </returns>
public PropertyMetadata GetMetadata<T>() where T : IAvaloniaObject public AvaloniaPropertyMetadata GetMetadata<T>() where T : IAvaloniaObject
{ {
return GetMetadata(typeof(T)); return GetMetadata(typeof(T));
} }
@ -432,7 +432,7 @@ namespace Avalonia
/// The property metadata. /// The property metadata.
/// </returns> /// </returns>
/// ///
public PropertyMetadata GetMetadata(Type type) public AvaloniaPropertyMetadata GetMetadata(Type type)
{ {
if (!_hasMetadataOverrides) if (!_hasMetadataOverrides)
{ {
@ -521,7 +521,7 @@ namespace Avalonia
/// </summary> /// </summary>
/// <param name="type">The type.</param> /// <param name="type">The type.</param>
/// <param name="metadata">The metadata.</param> /// <param name="metadata">The metadata.</param>
protected void OverrideMetadata(Type type, PropertyMetadata metadata) protected void OverrideMetadata(Type type, AvaloniaPropertyMetadata metadata)
{ {
Contract.Requires<ArgumentNullException>(type != null); Contract.Requires<ArgumentNullException>(type != null);
Contract.Requires<ArgumentNullException>(metadata != null); Contract.Requires<ArgumentNullException>(metadata != null);
@ -542,14 +542,14 @@ namespace Avalonia
protected abstract IObservable<AvaloniaPropertyChangedEventArgs> GetChanged(); protected abstract IObservable<AvaloniaPropertyChangedEventArgs> GetChanged();
private PropertyMetadata GetMetadataWithOverrides(Type type) private AvaloniaPropertyMetadata GetMetadataWithOverrides(Type type)
{ {
if (type is null) if (type is null)
{ {
throw new ArgumentNullException(nameof(type)); throw new ArgumentNullException(nameof(type));
} }
if (_metadataCache.TryGetValue(type, out PropertyMetadata result)) if (_metadataCache.TryGetValue(type, out AvaloniaPropertyMetadata result))
{ {
return result; return result;
} }

8
src/Avalonia.Base/PropertyMetadata.cs → src/Avalonia.Base/AvaloniaPropertyMetadata.cs

@ -5,15 +5,15 @@ namespace Avalonia
/// <summary> /// <summary>
/// Base class for avalonia property metadata. /// Base class for avalonia property metadata.
/// </summary> /// </summary>
public class PropertyMetadata public class AvaloniaPropertyMetadata
{ {
private BindingMode _defaultBindingMode; private BindingMode _defaultBindingMode;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="PropertyMetadata"/> class. /// Initializes a new instance of the <see cref="AvaloniaPropertyMetadata"/> class.
/// </summary> /// </summary>
/// <param name="defaultBindingMode">The default binding mode.</param> /// <param name="defaultBindingMode">The default binding mode.</param>
public PropertyMetadata( public AvaloniaPropertyMetadata(
BindingMode defaultBindingMode = BindingMode.Default) BindingMode defaultBindingMode = BindingMode.Default)
{ {
_defaultBindingMode = defaultBindingMode; _defaultBindingMode = defaultBindingMode;
@ -37,7 +37,7 @@ namespace Avalonia
/// <param name="baseMetadata">The base metadata to merge.</param> /// <param name="baseMetadata">The base metadata to merge.</param>
/// <param name="property">The property to which the metadata is being applied.</param> /// <param name="property">The property to which the metadata is being applied.</param>
public virtual void Merge( public virtual void Merge(
PropertyMetadata baseMetadata, AvaloniaPropertyMetadata baseMetadata,
AvaloniaProperty property) AvaloniaProperty property)
{ {
if (_defaultBindingMode == BindingMode.Default) if (_defaultBindingMode == BindingMode.Default)

6
src/Avalonia.Base/AvaloniaProperty`1.cs

@ -23,7 +23,7 @@ namespace Avalonia
protected AvaloniaProperty( protected AvaloniaProperty(
string name, string name,
Type ownerType, Type ownerType,
PropertyMetadata metadata, AvaloniaPropertyMetadata metadata,
Action<IAvaloniaObject, bool> notifying = null) Action<IAvaloniaObject, bool> notifying = null)
: base(name, typeof(TValue), ownerType, metadata, notifying) : base(name, typeof(TValue), ownerType, metadata, notifying)
{ {
@ -40,7 +40,7 @@ namespace Avalonia
protected AvaloniaProperty( protected AvaloniaProperty(
AvaloniaProperty source, AvaloniaProperty source,
Type ownerType, Type ownerType,
PropertyMetadata metadata) AvaloniaPropertyMetadata metadata)
: this(source as AvaloniaProperty<TValue> ?? throw new InvalidOperationException(), ownerType, metadata) : this(source as AvaloniaProperty<TValue> ?? throw new InvalidOperationException(), ownerType, metadata)
{ {
} }
@ -54,7 +54,7 @@ namespace Avalonia
protected AvaloniaProperty( protected AvaloniaProperty(
AvaloniaProperty<TValue> source, AvaloniaProperty<TValue> source,
Type ownerType, Type ownerType,
PropertyMetadata metadata) AvaloniaPropertyMetadata metadata)
: base(source, ownerType, metadata) : base(source, ownerType, metadata)
{ {
_changed = source._changed; _changed = source._changed;

6
src/Avalonia.Base/DirectPropertyBase.cs

@ -26,7 +26,7 @@ namespace Avalonia
protected DirectPropertyBase( protected DirectPropertyBase(
string name, string name,
Type ownerType, Type ownerType,
PropertyMetadata metadata) AvaloniaPropertyMetadata metadata)
: base(name, ownerType, metadata) : base(name, ownerType, metadata)
{ {
} }
@ -41,7 +41,7 @@ namespace Avalonia
protected DirectPropertyBase( protected DirectPropertyBase(
AvaloniaProperty source, AvaloniaProperty source,
Type ownerType, Type ownerType,
PropertyMetadata metadata) AvaloniaPropertyMetadata metadata)
: this(source as DirectPropertyBase<TValue> ?? throw new InvalidOperationException(), ownerType, metadata) : this(source as DirectPropertyBase<TValue> ?? throw new InvalidOperationException(), ownerType, metadata)
{ {
} }
@ -55,7 +55,7 @@ namespace Avalonia
protected DirectPropertyBase( protected DirectPropertyBase(
DirectPropertyBase<TValue> source, DirectPropertyBase<TValue> source,
Type ownerType, Type ownerType,
PropertyMetadata metadata) AvaloniaPropertyMetadata metadata)
: base(source, ownerType, metadata) : base(source, ownerType, metadata)
{ {
} }

4
src/Avalonia.Base/DirectPropertyMetadata`1.cs

@ -5,7 +5,7 @@ namespace Avalonia
/// <summary> /// <summary>
/// Metadata for direct avalonia properties. /// Metadata for direct avalonia properties.
/// </summary> /// </summary>
public class DirectPropertyMetadata<TValue> : PropertyMetadata, IDirectPropertyMetadata public class DirectPropertyMetadata<TValue> : AvaloniaPropertyMetadata, IDirectPropertyMetadata
{ {
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="StyledPropertyMetadata{TValue}"/> class. /// Initializes a new instance of the <see cref="StyledPropertyMetadata{TValue}"/> class.
@ -47,7 +47,7 @@ namespace Avalonia
object IDirectPropertyMetadata.UnsetValue => UnsetValue; object IDirectPropertyMetadata.UnsetValue => UnsetValue;
/// <inheritdoc/> /// <inheritdoc/>
public override void Merge(PropertyMetadata baseMetadata, AvaloniaProperty property) public override void Merge(AvaloniaPropertyMetadata baseMetadata, AvaloniaProperty property)
{ {
base.Merge(baseMetadata, property); base.Merge(baseMetadata, property);

4
src/Avalonia.Base/StyledPropertyMetadata`1.cs

@ -6,7 +6,7 @@ namespace Avalonia
/// <summary> /// <summary>
/// Metadata for styled avalonia properties. /// Metadata for styled avalonia properties.
/// </summary> /// </summary>
public class StyledPropertyMetadata<TValue> : PropertyMetadata, IStyledPropertyMetadata public class StyledPropertyMetadata<TValue> : AvaloniaPropertyMetadata, IStyledPropertyMetadata
{ {
private Optional<TValue> _defaultValue; private Optional<TValue> _defaultValue;
@ -39,7 +39,7 @@ namespace Avalonia
object IStyledPropertyMetadata.DefaultValue => DefaultValue; object IStyledPropertyMetadata.DefaultValue => DefaultValue;
/// <inheritdoc/> /// <inheritdoc/>
public override void Merge(PropertyMetadata baseMetadata, AvaloniaProperty property) public override void Merge(AvaloniaPropertyMetadata baseMetadata, AvaloniaProperty property)
{ {
base.Merge(baseMetadata, property); base.Merge(baseMetadata, property);

22
tests/Avalonia.Base.UnitTests/AvaloniaPropertyTests.cs

@ -27,7 +27,7 @@ namespace Avalonia.Base.UnitTests
[Fact] [Fact]
public void GetMetadata_Returns_Supplied_Value() public void GetMetadata_Returns_Supplied_Value()
{ {
var metadata = new PropertyMetadata(); var metadata = new AvaloniaPropertyMetadata();
var target = new TestProperty<string>("test", typeof(Class1), metadata); var target = new TestProperty<string>("test", typeof(Class1), metadata);
Assert.Same(metadata, target.GetMetadata<Class1>()); Assert.Same(metadata, target.GetMetadata<Class1>());
@ -36,7 +36,7 @@ namespace Avalonia.Base.UnitTests
[Fact] [Fact]
public void GetMetadata_Returns_Supplied_Value_For_Derived_Class() public void GetMetadata_Returns_Supplied_Value_For_Derived_Class()
{ {
var metadata = new PropertyMetadata(); var metadata = new AvaloniaPropertyMetadata();
var target = new TestProperty<string>("test", typeof(Class1), metadata); var target = new TestProperty<string>("test", typeof(Class1), metadata);
Assert.Same(metadata, target.GetMetadata<Class2>()); Assert.Same(metadata, target.GetMetadata<Class2>());
@ -45,7 +45,7 @@ namespace Avalonia.Base.UnitTests
[Fact] [Fact]
public void GetMetadata_Returns_Supplied_Value_For_Unrelated_Class() public void GetMetadata_Returns_Supplied_Value_For_Unrelated_Class()
{ {
var metadata = new PropertyMetadata(); var metadata = new AvaloniaPropertyMetadata();
var target = new TestProperty<string>("test", typeof(Class3), metadata); var target = new TestProperty<string>("test", typeof(Class3), metadata);
Assert.Same(metadata, target.GetMetadata<Class2>()); Assert.Same(metadata, target.GetMetadata<Class2>());
@ -54,8 +54,8 @@ namespace Avalonia.Base.UnitTests
[Fact] [Fact]
public void GetMetadata_Returns_Overridden_Value() public void GetMetadata_Returns_Overridden_Value()
{ {
var metadata = new PropertyMetadata(); var metadata = new AvaloniaPropertyMetadata();
var overridden = new PropertyMetadata(); var overridden = new AvaloniaPropertyMetadata();
var target = new TestProperty<string>("test", typeof(Class1), metadata); var target = new TestProperty<string>("test", typeof(Class1), metadata);
target.OverrideMetadata<Class2>(overridden); target.OverrideMetadata<Class2>(overridden);
@ -66,9 +66,9 @@ namespace Avalonia.Base.UnitTests
[Fact] [Fact]
public void OverrideMetadata_Should_Merge_Values() public void OverrideMetadata_Should_Merge_Values()
{ {
var metadata = new PropertyMetadata(BindingMode.TwoWay); var metadata = new AvaloniaPropertyMetadata(BindingMode.TwoWay);
var notify = (Action<IAvaloniaObject, bool>)((a, b) => { }); var notify = (Action<IAvaloniaObject, bool>)((a, b) => { });
var overridden = new PropertyMetadata(); var overridden = new AvaloniaPropertyMetadata();
var target = new TestProperty<string>("test", typeof(Class1), metadata); var target = new TestProperty<string>("test", typeof(Class1), metadata);
target.OverrideMetadata<Class2>(overridden); target.OverrideMetadata<Class2>(overridden);
@ -129,19 +129,19 @@ namespace Avalonia.Base.UnitTests
[Fact] [Fact]
public void PropertyMetadata_BindingMode_Default_Returns_OneWay() public void PropertyMetadata_BindingMode_Default_Returns_OneWay()
{ {
var data = new PropertyMetadata(defaultBindingMode: BindingMode.Default); var data = new AvaloniaPropertyMetadata(defaultBindingMode: BindingMode.Default);
Assert.Equal(BindingMode.OneWay, data.DefaultBindingMode); Assert.Equal(BindingMode.OneWay, data.DefaultBindingMode);
} }
private class TestProperty<TValue> : AvaloniaProperty<TValue> private class TestProperty<TValue> : AvaloniaProperty<TValue>
{ {
public TestProperty(string name, Type ownerType, PropertyMetadata metadata = null) public TestProperty(string name, Type ownerType, AvaloniaPropertyMetadata metadata = null)
: base(name, ownerType, metadata ?? new PropertyMetadata()) : base(name, ownerType, metadata ?? new AvaloniaPropertyMetadata())
{ {
} }
public void OverrideMetadata<T>(PropertyMetadata metadata) public void OverrideMetadata<T>(AvaloniaPropertyMetadata metadata)
{ {
OverrideMetadata(typeof(T), metadata); OverrideMetadata(typeof(T), metadata);
} }

Loading…
Cancel
Save