/// <inheritdoc/> void IStorage.CollectChainOfStorages(IList <StorageUsingOptions> result, IList <IStorage> usedStorages, int level, CollectChainOfStoragesOptions options) { #if DEBUG //Log($"result?.Count = {result?.Count}"); //Log($"level = {level}"); #endif if (usedStorages.Contains(this)) { return; } usedStorages.Add(this); //if(result.Any(p => p.Storage == this)) //{ // return; //} level++; var item = new StorageUsingOptions() { Priority = level, Storage = this, UseFacts = true, UseProductions = true, UseAdditionalInstances = true }; if (options != null) { if (options.UseFacts.HasValue) { item.UseFacts = options.UseFacts.Value; } } result.Add(item); lock (_lockObj) { var parentsList = _realStorageContext.Parents; if (parentsList.Any()) { foreach (var parent in parentsList) { parent.CollectChainOfStorages(result, usedStorages, level, options); } } } }
/// <inheritdoc/> void IStorage.CollectChainOfStorages(IList <StorageUsingOptions> result, IList <IStorage> usedStorages, int level, CollectChainOfStoragesOptions options) { level++; var item = new StorageUsingOptions() { Priority = level, Storage = this, UseFacts = true, UseProductions = true, UseAdditionalInstances = true }; if (options != null) { if (options.UseFacts.HasValue) { item.UseFacts = options.UseFacts.Value; } } result.Add(item); }