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

PluginServiceBase

public abstract class PluginServiceBase : IDisposable
using System; using System.ComponentModel.Composition.Hosting; using System.ComponentModel.Composition.Primitives; namespace Relativity.Transfer { public abstract class PluginServiceBase : IDisposable { private readonly bool disposeCatalog; private bool disposed; protected ITransferLog Log { get; } protected CompositionContainer CompositionContainer { get; set; } protected ComposablePartCatalog ComposablePartCatalog { get; set; } protected PluginServiceBase() : this(new NullTransferLog()) { } protected PluginServiceBase(ITransferLog log) { if (log == null) throw new ArgumentNullException("log"); disposeCatalog = true; Log = log; } protected PluginServiceBase(ComposablePartCatalog catalog, ITransferLog log) { if (catalog == null) throw new ArgumentNullException("catalog"); if (log == null) throw new ArgumentNullException("log"); Log = log; ComposablePartCatalog = catalog; disposeCatalog = false; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected void CleanupResources() { if ((object)CompositionContainer != null) { CompositionContainer.Dispose(); CompositionContainer = null; } } private void Dispose(bool disposing) { if (!disposed) { if (disposing) { if ((object)ComposablePartCatalog != null && disposeCatalog) ComposablePartCatalog.Dispose(); ComposablePartCatalog = null; CleanupResources(); } disposed = true; } } } }