Files
Umbraco-CMS/src/Umbraco.Core/Cache/JsonCacheRefresherBase.cs

54 lines
1.8 KiB
C#
Raw Normal View History

using Umbraco.Core.Serialization;
using Umbraco.Core.Sync;
2018-06-29 19:52:40 +02:00
namespace Umbraco.Core.Cache
{
/// <summary>
/// A base class for "json" cache refreshers.
/// </summary>
/// <typeparam name="TInstanceType">The actual cache refresher type.</typeparam>
/// <remarks>The actual cache refresher type is used for strongly typed events.</remarks>
public abstract class JsonCacheRefresherBase<TInstanceType, TJsonPayload> : CacheRefresherBase<TInstanceType>, IJsonCacheRefresher
2018-06-29 19:52:40 +02:00
where TInstanceType : class, ICacheRefresher
{
protected IJsonSerializer JsonSerializer { get; }
2018-06-29 19:52:40 +02:00
/// <summary>
/// Initializes a new instance of the <see cref="JsonCacheRefresherBase{TInstanceType}"/>.
/// </summary>
2019-01-17 08:34:29 +01:00
/// <param name="appCaches">A cache helper.</param>
protected JsonCacheRefresherBase(AppCaches appCaches, IJsonSerializer jsonSerializer) : base(appCaches)
{
JsonSerializer = jsonSerializer;
}
2018-06-29 19:52:40 +02:00
/// <summary>
/// Refreshes as specified by a json payload.
/// </summary>
/// <param name="json">The json payload.</param>
public virtual void Refresh(string json)
{
OnCacheUpdated(This, new CacheRefresherEventArgs(json, MessageType.RefreshByJson));
}
#region Json
/// <summary>
/// Deserializes a json payload into an object payload.
/// </summary>
/// <param name="json">The json payload.</param>
/// <returns>The deserialized object payload.</returns>
public TJsonPayload[] Deserialize(string json)
{
return JsonSerializer.Deserialize<TJsonPayload[]>(json);
}
public string Serialize(params TJsonPayload[] jsonPayloads)
{
return JsonSerializer.Serialize(jsonPayloads);
}
#endregion
2018-06-29 19:52:40 +02:00
}
}