Доработка работы с несколькими адаптерами

This commit is contained in:
2026-02-06 07:45:19 +03:00
parent cd280369bc
commit 5dc071c750
10 changed files with 79 additions and 165 deletions

View File

@@ -26,16 +26,13 @@ public sealed class MultiAdapterFactory : IMessengerAdapterFactory
throw new ArgumentException($"Adapter with ID '{adapterId}' is already registered", nameof(adapterId));
// Устанавливаем идентификатор в адаптер
if (adapter is MessengerAdapterBase adapterBase)
{
adapterBase.AdapterId = adapterId;
}
adapter.SetAdapterId(adapterId);
_allAdapters.Add(adapter);
_adaptersById[adapterId] = adapter;
// Группируем по типу
var adapterType = GetAdapterType(adapter);
var adapterType = adapter.Type;
if (!_adaptersByType.TryGetValue(adapterType, out var typeList))
{
typeList = new List<IMessengerAdapterSetup>();
@@ -106,7 +103,7 @@ public sealed class MultiAdapterFactory : IMessengerAdapterFactory
_allAdapters.Remove(adapter);
_adaptersById.Remove(adapterId);
var adapterType = GetAdapterType(adapter);
var adapterType = adapter.Type;
if (_adaptersByType.TryGetValue(adapterType, out var typeList))
{
typeList.Remove(adapter);
@@ -122,20 +119,9 @@ public sealed class MultiAdapterFactory : IMessengerAdapterFactory
return false;
}
private static string GetAdapterType(IMessengerAdapter adapter)
{
if (adapter is MessengerAdapterBase adapterBase)
{
return adapterBase.AdapterType;
}
// Для обратной совместимости
return adapter.GetType().Name.Replace("Adapter", "");
}
private static string GenerateAdapterId(IMessengerAdapter adapter)
{
var adapterType = GetAdapterType(adapter);
var adapterType = adapter.Type;
var guid = Guid.NewGuid().ToString("N").Substring(0, 8);
return $"{adapterType}_{guid}".ToLowerInvariant();
}