コード例 #1
0
        /// <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));
            }
        }