diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
index 4cf5bdd6af..9bced05ff5 100644
--- a/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
@@ -71,6 +71,14 @@ public interface IPublishedPropertyType
///
Type ModelClrType { get; }
+ ///
+ /// Gets the property model Delivery Api CLR type.
+ ///
+ ///
+ /// The model CLR type may be a type, or may contain types.
+ ///
+ Type DeliveryApiModelClrType => ModelClrType;
+
///
/// Gets the property CLR type.
///
diff --git a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
index 52e3371767..ed2d19cd6f 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
@@ -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;
}
///
@@ -352,6 +349,20 @@ namespace Umbraco.Cms.Core.Models.PublishedContent
}
}
+ ///
+ public Type DeliveryApiModelClrType
+ {
+ get
+ {
+ if (!_initialized)
+ {
+ Initialize();
+ }
+
+ return _deliveryApiModelClrType!;
+ }
+ }
+
///
public Type? ClrType
{