K;отслеживается через отражатель.Единственное время, когда обычная реализация использует это значение, при обработке некоторых данных с помощью удаленного взаимодействия, если значение, возвращаемое из HeaderHandler
, равно MarshalByRefObject
, и в этом случае удостоверение получается и используется для обратной ссылки.В частности, конструктор System.Runtime.Remoting.Messaging.MethodCall
.
Но все это - деталь реализации!В большинстве нормальных сценариев ответ таков: он не используется.
Действительно, обработка заголовка происходит после основной десериализации, которая недоверчиво исключает использование обработчика заголовка для установкинекоторые значения в объекте контекста, который вы затем обрабатываете.
Однако ваш обработчик заголовка все еще может обновлять локальные переменные:
string someValue = null;
object obj = serializer.Deserialize(source, headers => {
// check the headers and assign someValue based on
// what you find there; for brevity, make it up!
someValue = "something from the headers";
return null;
});
Console.WriteLine(someValue);
Должен любить полные лексические замыкания.
Лично я делаю вывод: это не способ сделать это.Я бы просто передал DTO с точно данными, которые вы хотите отправить.