namespace Umbraco.Cms.Core.Models.PublishedContent { /// /// Represents a property of an IPublishedElement. /// public interface IPublishedProperty { IPublishedPropertyType PropertyType { get; } /// /// Gets the alias of the property. /// string Alias { get; } /// /// Gets a value indicating whether the property has a value. /// /// /// This is somewhat implementation-dependent -- depending on whatever IPublishedCache considers /// a missing value. /// The XmlPublishedCache raw values are strings, and it will consider missing, null or empty (and /// that includes whitespace-only) strings as "no value". /// Other caches that get their raw value from the database would consider that a property has "no /// value" if it is missing, null, or an empty string (including whitespace-only). /// bool HasValue(string? culture = null, string? segment = null); /// /// Gets the source value of the property. /// /// /// The source value is whatever was passed to the property when it was instantiated, and it is /// somewhat implementation-dependent -- depending on how the IPublishedCache is implemented. /// The XmlPublishedCache source values are strings exclusively since they come from the Xml cache. /// For other caches that get their source value from the database, it would be either a string, /// an integer (Int32), a date and time (DateTime) or a decimal (double). /// If you're using that value, you're probably wrong, unless you're doing some internal /// Umbraco stuff. /// object? GetSourceValue(string? culture = null, string? segment = null); /// /// Gets the object value of the property. /// /// /// The value is what you want to use when rendering content in an MVC view ie in C#. /// It can be null, or any type of CLR object. /// It has been fully prepared and processed by the appropriate converter. /// object? GetValue(string? culture = null, string? segment = null); /// /// Gets the XPath value of the property. /// /// /// The XPath value is what you want to use when navigating content via XPath eg in the XSLT engine. /// It must be either null, or a string, or an XPathNavigator. /// It has been fully prepared and processed by the appropriate converter. /// object? GetXPathValue(string? culture = null, string? segment = null); } }