static async Task QueryAndTestPlugins(IPluginServerControlAsync pluginHost) { var tasks = new List <Task>(); foreach (var(uri, qualifiedName) in await pluginHost.EnumerateEndPointsAsync()) { if (qualifiedName == typeof(IPlugin).AssemblyQualifiedName) { var plugin = await ConnectAsync <IPluginAsync>(uri); tasks.Add(TestPlugin(plugin)); } } await Task.WhenAll(tasks); }
static async Task LoadPluginAssemblyAndListPlugins(IPluginServerControlAsync pluginHost) { await pluginHost.LoadPluginAssemblyAsync(typeof(TestPlugin.Plugin1).Assembly.Location); var availablePlugins = await pluginHost.EnumerateAvailablePluginsAsync(); Console.WriteLine("Available plugins"); foreach (var plugin in availablePlugins) { Console.WriteLine($"{plugin.ServiceName}:"); Console.WriteLine($"Implementation: {plugin.ImplementationName}"); Console.WriteLine("Contracts:"); foreach (var contrct in plugin.Contracts) { Console.WriteLine($" {contrct.ContractInterfaceName}"); Console.WriteLine($" Endpoints:"); foreach (var endpoint in contrct.EndPoints) { Console.WriteLine($" {endpoint}"); } } Console.WriteLine(); } }