|
|
@ -50,7 +50,10 @@ namespace Avalonia |
|
|
AvaloniaPropertyMetadata metadata, |
|
|
AvaloniaPropertyMetadata metadata, |
|
|
Action<AvaloniaObject, bool>? notifying = null) |
|
|
Action<AvaloniaObject, bool>? notifying = null) |
|
|
{ |
|
|
{ |
|
|
_ = name ?? throw new ArgumentNullException(nameof(name)); |
|
|
ThrowHelper.ThrowIfNull(name, nameof(name)); |
|
|
|
|
|
ThrowHelper.ThrowIfNull(valueType, nameof(valueType)); |
|
|
|
|
|
ThrowHelper.ThrowIfNull(ownerType, nameof(ownerType)); |
|
|
|
|
|
ThrowHelper.ThrowIfNull(metadata, nameof(metadata)); |
|
|
|
|
|
|
|
|
if (name.Contains('.')) |
|
|
if (name.Contains('.')) |
|
|
{ |
|
|
{ |
|
|
@ -60,12 +63,13 @@ namespace Avalonia |
|
|
_metadata = new Dictionary<Type, AvaloniaPropertyMetadata>(); |
|
|
_metadata = new Dictionary<Type, AvaloniaPropertyMetadata>(); |
|
|
|
|
|
|
|
|
Name = name; |
|
|
Name = name; |
|
|
PropertyType = valueType ?? throw new ArgumentNullException(nameof(valueType)); |
|
|
PropertyType = valueType; |
|
|
OwnerType = ownerType ?? throw new ArgumentNullException(nameof(ownerType)); |
|
|
OwnerType = ownerType; |
|
|
Notifying = notifying; |
|
|
Notifying = notifying; |
|
|
Id = s_nextId++; |
|
|
Id = s_nextId++; |
|
|
|
|
|
|
|
|
_metadata.Add(hostType, metadata ?? throw new ArgumentNullException(nameof(metadata))); |
|
|
metadata.Freeze(); |
|
|
|
|
|
_metadata.Add(hostType, metadata); |
|
|
_defaultMetadata = metadata.GenerateTypeSafeMetadata(); |
|
|
_defaultMetadata = metadata.GenerateTypeSafeMetadata(); |
|
|
_singleMetadata = new(hostType, metadata); |
|
|
_singleMetadata = new(hostType, metadata); |
|
|
} |
|
|
} |
|
|
@ -584,6 +588,7 @@ namespace Avalonia |
|
|
|
|
|
|
|
|
var baseMetadata = GetMetadata(type); |
|
|
var baseMetadata = GetMetadata(type); |
|
|
metadata.Merge(baseMetadata, this); |
|
|
metadata.Merge(baseMetadata, this); |
|
|
|
|
|
metadata.Freeze(); |
|
|
_metadata.Add(type, metadata); |
|
|
_metadata.Add(type, metadata); |
|
|
_metadataCache.Clear(); |
|
|
_metadataCache.Clear(); |
|
|
|
|
|
|
|
|
|