// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.ObjectModel; using System.ComponentModel.Composition.Primitives; using System.Linq; using System.Reflection; using Microsoft.Internal; using Microsoft.Internal.Collections; namespace System.ComponentModel.Composition.Hosting { public partial class DirectoryCatalog { internal sealed class DirectoryCatalogDebuggerProxy { private readonly DirectoryCatalog _catalog; public DirectoryCatalogDebuggerProxy(DirectoryCatalog catalog) { Requires.NotNull(catalog, nameof(catalog)); _catalog = catalog; } public ReadOnlyCollection<Assembly> Assemblies { get { return _catalog._assemblyCatalogs.Values.Select(catalog => catalog.Assembly) .ToReadOnlyCollection(); } } public ReflectionContext? ReflectionContext { get { return _catalog._reflectionContext; } } public string SearchPattern { get { return _catalog.SearchPattern; } } public string Path { get { return _catalog._path; } } public string FullPath { get { return _catalog._fullPath; } } public ReadOnlyCollection<string> LoadedFiles { get { return _catalog._loadedFiles; } } public ReadOnlyCollection<ComposablePartDefinition> Parts { // NOTE: This shouldn't be cached, so that on every query of // the current value of the underlying catalog is respected. // We use ReadOnlyCollection as arrays do not have the // appropriate debugger display attributes applied to them. get { return _catalog.Parts.ToReadOnlyCollection(); } } } } } |