.NET Framework Connexion (basique)


Exemple

Voir les autres exemples ci-dessus.

using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;

namespace Demo
{
    public static class Program
    {
        public static void Main()
        {
            using (var catalog = new ApplicationCatalog())
            using (var exportProvider = new CatalogExportProvider(catalog))
            using (var container = new CompositionContainer(exportProvider))
            {
                exportProvider.SourceProvider = container;

                UserWriter writer = new UserWriter();

                // at this point, writer's userProvider field is null
                container.ComposeParts(writer);

                // now, it should be non-null (or an exception will be thrown).
                writer.PrintAllUsers();
            }
        }
    }
}

Tant que quelque chose dans le chemin de recherche de l'assembly de l'application comporte [Export(typeof(IUserProvider))] , l'importation correspondante de UserWriter sera satisfaite et les utilisateurs seront imprimés.

D'autres types de catalogues (par exemple, DirectoryCatalog ) peuvent être utilisés à la place (ou en plus) d' ApplicationCatalog , pour rechercher dans d'autres emplacements des exportations satisfaisant les importations.