public static Task ApplyIncludes(this ConfigDocument doc, IIncludesProvider includeProvider) { if (doc == null) { throw new ArgumentNullException(nameof(doc)); } if (includeProvider == null) { throw new ArgumentNullException(nameof(includeProvider)); } return(ResolveIncludes(doc, 0, includeProvider)); }
static async Task ResolveIncludes(ConfigDocument confDoc, int deepCount, IIncludesProvider includeProvider) { if (deepCount >= 2) { return; } foreach (var include in confDoc.GetIncludes()) { var includeContent = await includeProvider.GetInclude(include.Link); await ResolveIncludes(includeContent, deepCount + 1, includeProvider); include.Resolve(includeContent); } }