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:
Vitor Rodrigues
2023-12-01 13:43:39 +01:00
committed by kjac
parent 8f497c8f7e
commit a4b4107190
2 changed files with 28 additions and 9 deletions

View File

@@ -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>

View File

@@ -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
{