<PackageReference Include="Relativity.Server.Transfer.SDK" Version="24000.0.1" />

TransferClientPluginService

using System; using System.Collections.Generic; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; using System.ComponentModel.Composition.Primitives; using System.Linq; using System.Reflection; namespace Relativity.Transfer { internal class TransferClientPluginService : PluginServiceBase { [ImportMany(typeof(ITransferClient))] private IList<Lazy<ITransferClient, ITransferClientMetadata>> Clients { get; set; } [ImportMany(typeof(IConfigurationDetail))] private IList<IConfigurationDetail> ConfigurationDetails { get; set; } public TransferClientPluginService(ITransferLog log) : base(log) { Clients = new List<Lazy<ITransferClient, ITransferClientMetadata>>(); ConfigurationDetails = new List<IConfigurationDetail>(); } public TransferClientPluginService(ComposablePartCatalog catalog, ITransferLog log) : base(catalog, log) { Clients = new List<Lazy<ITransferClient, ITransferClientMetadata>>(); ConfigurationDetails = new List<IConfigurationDetail>(); } public IEnumerable<Lazy<ITransferClient, ITransferClientMetadata>> Search(RelativityConnectionInfo connectionInfo, ClientConfiguration configuration) { Clients.Clear(); CleanupResources(); if ((object)base.ComposablePartCatalog == null) { Assembly callingAssembly = Assembly.GetCallingAssembly(); base.ComposablePartCatalog = new AssemblyCatalog(callingAssembly); } base.CompositionContainer = new CompositionContainer(base.ComposablePartCatalog, Array.Empty<ExportProvider>()); AttributedModelServices.ComposeExportedValue<ITransferLog>(base.CompositionContainer, "Logger", base.Log); AttributedModelServices.ComposeExportedValue<RelativityConnectionInfo>(base.CompositionContainer, "RelativityConnectionInfo", connectionInfo); AttributedModelServices.ComposeExportedValue<ClientConfiguration>(base.CompositionContainer, "ClientConfiguration", configuration); AttributedModelServices.ComposeParts(base.CompositionContainer, new object[1] { this }); return new List<Lazy<ITransferClient, ITransferClientMetadata>>(Clients); } public IEnumerable<IConfigurationDetail> SearchConfigurationDetails() { ConfigurationDetails.Clear(); CleanupResources(); if ((object)base.ComposablePartCatalog == null) { Assembly callingAssembly = Assembly.GetCallingAssembly(); base.ComposablePartCatalog = new AssemblyCatalog(callingAssembly); } base.CompositionContainer = new CompositionContainer(base.ComposablePartCatalog, Array.Empty<ExportProvider>()); AttributedModelServices.ComposeParts(base.CompositionContainer, new object[1] { this }); return new List<IConfigurationDetail>(ConfigurationDetails); } public IEnumerable<ITransferClientMetadata> SearchMetadata() { return (from x in Search(new RelativityConnectionInfo(), new ClientConfiguration()) select x.Metadata).ToList(); } } }