diff --git a/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs b/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
index 45d36abb6a98..fd22b7cc9aab 100644
--- a/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/IPublishedPropertyType.cs
@@ -65,6 +65,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 848e961d0b2b..dae0287ee7d8 100644
--- a/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
+++ b/src/Umbraco.Core/Models/PublishedContent/PublishedPropertyType.cs
@@ -23,6 +23,7 @@ public class PublishedPropertyType : IPublishedPropertyType
private PropertyCacheLevel _deliveryApiCacheLevel;
private Type? _modelClrType;
+ private Type? _deliveryApiModelClrType;
private Type? _clrType;
#region Constructors
@@ -191,11 +192,12 @@ private void InitializeLocked()
}
}
+ var deliveryApiPropertyValueConverter = _converter as IDeliveryApiPropertyValueConverter;
+
_cacheLevel = _converter?.GetPropertyCacheLevel(this) ?? PropertyCacheLevel.Snapshot;
- _deliveryApiCacheLevel = _converter is IDeliveryApiPropertyValueConverter deliveryApiPropertyValueConverter
- ? deliveryApiPropertyValueConverter.GetDeliveryApiPropertyCacheLevel(this)
- : _cacheLevel;
+ _deliveryApiCacheLevel = deliveryApiPropertyValueConverter?.GetDeliveryApiPropertyCacheLevel(this) ?? _cacheLevel;
_modelClrType = _converter?.GetPropertyValueType(this) ?? typeof(object);
+ _deliveryApiModelClrType = deliveryApiPropertyValueConverter?.GetDeliveryApiPropertyValueType(this) ?? _modelClrType;
}
///
@@ -331,6 +333,20 @@ public Type ModelClrType
}
}
+ ///
+ public Type DeliveryApiModelClrType
+ {
+ get
+ {
+ if (!_initialized)
+ {
+ Initialize();
+ }
+
+ return _deliveryApiModelClrType!;
+ }
+ }
+
///
public Type? ClrType
{