<PackageReference Include="Relativity.Server.Import.SDK" Version="2.9.2" />

FileNamePartProviderContainer

using FileNaming.CustomFileNaming; using System; using System.Collections.Generic; namespace kCura.WinEDDS.FileNaming.CustomFileNaming { public class FileNamePartProviderContainer : IFileNamePartProviderContainer { private readonly Dictionary<Type, IFileNamePartProvider> _fileNamePartProviders; public FileNamePartProviderContainer() { _fileNamePartProviders = new Dictionary<Type, IFileNamePartProvider>(); Register(typeof(SeparatorDescriptorPart), new SeparatorFileNamePartProvider()); Register(typeof(FieldDescriptorPart), new FieldFileNamePartProvider()); Register(typeof(CustomTextDescriptorPart), new CustomTextFileNamePartProvider()); Register(typeof(FirstFieldDescriptorPart), new FirstFieldFileNamePartProvider()); } public IFileNamePartProvider GetProvider(DescriptorPart descriptor) { Type type = descriptor.GetType(); if (!_fileNamePartProviders.ContainsKey(type)) throw new ArgumentOutOfRangeException($"""{descriptor.GetType()}"); return _fileNamePartProviders[type]; } IFileNamePartProvider IFileNamePartProviderContainer.GetProvider(DescriptorPart descriptor) { return this.GetProvider(descriptor); } public void Register(Type descriptorPartType, IFileNamePartProvider provider) { if (!descriptorPartType.IsSubclassOf(typeof(DescriptorPart))) throw new ArgumentException($"""{descriptorPartType}"); _fileNamePartProviders[descriptorPartType] = provider; } void IFileNamePartProviderContainer.Register(Type descriptorPartType, IFileNamePartProvider provider) { this.Register(descriptorPartType, provider); } } }