/// <summary>Initializes a new instance of the <see cref="WebGreaseSectionKey"/> class.</summary> /// <param name="context">The context.</param> /// <param name="category">The id.</param> /// <param name="cacheVarByContentItem">The cache var by content item.</param> /// <param name="cacheVarBySetting">The cache var by setting.</param> /// <param name="cacheVarByFileSet">The cache var by file set.</param> /// <param name="uniqueKey">The unique Key.</param> public WebGreaseSectionKey(IWebGreaseContext context, string category, ContentItem cacheVarByContentItem, object cacheVarBySetting, IFileSet cacheVarByFileSet, string uniqueKey = null) { this.Category = category; this.Value = uniqueKey; if (string.IsNullOrWhiteSpace(uniqueKey)) { var varyByFiles = new List <CacheVaryByFile>(); var varyBySettings = new List <string>(); if (cacheVarByContentItem != null) { varyByFiles.Add(CacheVaryByFile.FromFile(context, cacheVarByContentItem)); varyBySettings.Add(cacheVarByContentItem.ResourcePivotKeys.ToJson()); } if (cacheVarByFileSet != null) { varyBySettings.Add(cacheVarByFileSet.ToJson()); } if (context.Configuration.Overrides != null) { varyBySettings.Add(context.Configuration.Overrides.UniqueKey); } varyBySettings.Add(cacheVarBySetting.ToJson(true)); this.Value = CacheSectionFileVersionKey + Delimiter + category + Delimiter + string.Join(Delimiter, varyByFiles.Select(vbf => vbf.Hash).Concat(varyBySettings)); } }