Expose the Delivery API CLR type (#15150)
* Expose the Delivery API CLR type
* Updated field naming and warnings
Addresses PR feedback
* Added default implementation to prevent breaking change
(cherry picked from commit 7f4378066d)
This commit is contained in:
@@ -71,6 +71,14 @@ public interface IPublishedPropertyType
|
||||
/// </remarks>
|
||||
Type ModelClrType { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the property model Delivery Api CLR type.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <para>The model CLR type may be a <see cref="ModelType" /> type, or may contain <see cref="ModelType" /> types.</para>
|
||||
/// </remarks>
|
||||
Type DeliveryApiModelClrType => ModelClrType;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the property CLR type.
|
||||
/// </summary>
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace Umbraco.Cms.Core.Models.PublishedContent
|
||||
private PropertyCacheLevel _deliveryApiCacheLevelForExpansion;
|
||||
|
||||
private Type? _modelClrType;
|
||||
private Type? _deliveryApiModelClrType;
|
||||
private Type? _clrType;
|
||||
|
||||
#region Constructors
|
||||
@@ -192,17 +193,13 @@ namespace Umbraco.Cms.Core.Models.PublishedContent
|
||||
}
|
||||
}
|
||||
|
||||
var deliveryApiPropertyValueConverter = _converter as IDeliveryApiPropertyValueConverter;
|
||||
|
||||
_cacheLevel = _converter?.GetPropertyCacheLevel(this) ?? PropertyCacheLevel.Snapshot;
|
||||
if (_converter is IDeliveryApiPropertyValueConverter deliveryApiPropertyValueConverter)
|
||||
{
|
||||
_deliveryApiCacheLevel = deliveryApiPropertyValueConverter.GetDeliveryApiPropertyCacheLevel(this);
|
||||
_deliveryApiCacheLevelForExpansion = deliveryApiPropertyValueConverter.GetDeliveryApiPropertyCacheLevelForExpansion(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
_deliveryApiCacheLevel = _deliveryApiCacheLevelForExpansion = _cacheLevel;
|
||||
}
|
||||
_deliveryApiCacheLevel = deliveryApiPropertyValueConverter?.GetDeliveryApiPropertyCacheLevel(this) ?? _cacheLevel;
|
||||
_deliveryApiCacheLevelForExpansion = deliveryApiPropertyValueConverter?.GetDeliveryApiPropertyCacheLevelForExpansion(this) ?? _cacheLevel;
|
||||
_modelClrType = _converter?.GetPropertyValueType(this) ?? typeof(object);
|
||||
_deliveryApiModelClrType = deliveryApiPropertyValueConverter?.GetDeliveryApiPropertyValueType(this) ?? _modelClrType;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -352,6 +349,20 @@ namespace Umbraco.Cms.Core.Models.PublishedContent
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Type DeliveryApiModelClrType
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!_initialized)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
return _deliveryApiModelClrType!;
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public Type? ClrType
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user