Rodionc
@Rodionc
IT security, SIEM, IDM...

C# как передать значение обратно из 2 подряд inteface?

Подскажите, пожалуйста, как получить значение из дебрей интерфейсов:
Есть 2 интерфейса:
public class CookieBehavior : IEndpointBehavior
{
private string cookie;
public CookieBehavior(string cookie)
        {
            this.cookie = cookie;
        }
 public void ApplyClientBehavior(ServiceEndpoint serviceEndpoint,
            System.ServiceModel.Dispatcher.ClientRuntime behavior)
        {
            behavior.MessageInspectors.Add(new CookieMessageInspector(cookie));
        }
}

и

public class CookieMessageInspector : IClientMessageInspector
{
private string cookie;
private string cookieOut;
public CookieMessageInspector(string cookie)
        {
            this.cookie = cookie;
        }
public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply,
            object correlationState)
        {
           HttpResponseMessageProperty httpResponseMessage;
            object httpResponseMessageObject;
            if (reply.Properties.TryGetValue(HttpResponseMessageProperty.Name, out httpResponseMessageObject))
            {
                httpResponseMessage = httpResponseMessageObject as HttpResponseMessageProperty;
                if (!string.IsNullOrEmpty(httpResponseMessage.Headers["Set-Cookie"]))
                {
                    cookieOut= httpResponseMessage.Headers["Set-Cookie"];
                }
            }
        }
}


Полученные из интерфейсов классы используются следующим образом:
//sr1 - прокси-класс для работы с SOAP
sr1.APIClient sCli = new sr1.APIClient(binding, address);
CookieBehavior b = new CookieBehavior("");
sCli.Endpoint.EndpointBehaviors.Add(b);


Задача: получить как-то рядом с sCli значение cookieOut из класса CookieMessageInspector.
PS Про делегаты и внедрение зависимостей слышал, но как и зачем они работают не понимаю.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы