Подскажите, пожалуйста, как получить значение из дебрей интерфейсов:
Есть 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 Про делегаты и внедрение зависимостей слышал, но как и зачем они работают не понимаю.