Adapter.Composition (nuget): The provided ComposedAdapterService exports the IAdapterService interface, and "imports many" IAdapter implementations.                          Initialize your composition container so that it contains both the exported adapters and the adapter service, and it              will be initialized automatically for use.                          ======= Example =======             // Initialize container with your assemblies/types/catalogs             CompositionContainer container = new CompositionContainer(catalog);                          // Retrieve initialized adapter service             IAdapterService service = container.GetExportedValue<IAdapterService>();                          // Initialize the adapter facade with the service             Adapters.SetService(service);                          // Use adapter extension method As as needed, i.e.                         // say we need to use it as an MSBuild project, if possible             IMSBuildProject msbuild = project.As<IMSBuildProject>();             if (msbuild != null)                 // do MSBuild stuff with it.                              ======= Adapters =======             [Export(typeof(IAdapter))]             public class ProjectToMsBuildAdapter : IAdapter<IProject, IMSBuildProject>             {                 // Implement actual conversion.             }              Simply by exporting the right contract, the adapter service will locate it.             Note that to create adapter implementations, you need to install the Adapter.Sdk package.
Keywords: patterns|adapter