/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Initializers/HeaderInitializers/DictionaryCopyHeaderInitializer.cs
35 строк
1 KB
Chris Patterson
Integration of all external packages into MassTransit, split out into Abstractions, Middleware, and the core MassTransit assembly.
22 янв 2022, 18:24
22 янв 2022, 18:24
b5b4f50
Код
Авторство
О чём код?
namespace MassTransit.Initializers.HeaderInitializers { using System; using System.Collections.Generic; using System.Reflection; using System.Threading.Tasks; using Internals; public class DictionaryCopyHeaderInitializer<TMessage, TInput, THeader> : IHeaderInitializer<TMessage, TInput> where TMessage : class where TInput : class, IDictionary<string, THeader> { readonly IWriteProperty<SendContext, THeader> _headerProperty; readonly string _key; public DictionaryCopyHeaderInitializer(PropertyInfo propertyInfo, string key) { if (propertyInfo == null) throw new ArgumentNullException(nameof(propertyInfo)); _key = key; _headerProperty = WritePropertyCache<SendContext>.GetProperty<THeader>(propertyInfo); } public Task Apply(InitializeContext<TMessage, TInput> context, SendContext sendContext) { if (context.HasInput && context.Input.TryGetValue(_key, out var value)) _headerProperty.Set(sendContext, value); return Task.CompletedTask; } } }