В моем веб-приложении я использую несколько asmx (веб-сервисов) от одного и того же провайдера, у них есть один для этого, другой для этого, но для всех требуется заголовок SOAP с аутентификацией.
Просто добавить Аутентификацию:
public static SoCredentialsHeader AttachCredentialHeader()
{
SoCredentialsHeader ch = new SoCredentialsHeader();
ch.AuthenticationType = SoAuthenticationType.CRM5;
ch.UserId = "myUsername";
ch.Secret = apUtilities.CalculateCredentialsSecret(
SoAuthenticationType.CRM5, apUtilities.GetDays(), "myUsername", "myPassword");
return ch;
}
Проблема в том, что этот SoCredentialsHeader пришел (деривация) из ОДНОГО веб-сервиса, и мне нужно добавить тот же код к другим, например:
public static wsContact.SoCredentialsHeader AttachContactCredentialHeader()
{
wsContact.SoCredentialsHeader ch = new wsContact.SoCredentialsHeader();
ch.AuthenticationType = wsContact.SoAuthenticationType.CRM5;
ch.UserId = "myUsername";
ch.Secret = apUtilities.CalculateCredentialsSecret(
wsContact.SoAuthenticationType.CRM5, apUtilities.GetDays(), "myUsername", "myPassword");
return ch;
}
public static wsDiary.SoCredentialsHeader AttachDiaryCredentialHeader()
{
wsDiary.SoCredentialsHeader ch = new wsDiary.SoCredentialsHeader();
ch.AuthenticationType = wsDiary.SoAuthenticationType.CRM5;
ch.UserId = "myUsername";
ch.Secret = apUtilities.CalculateCredentialsSecret(
wsDiary.SoAuthenticationType.CRM5, apUtilities.GetDays(), "myUsername", "myPassword");
return ch;
}
Есть ли способ реализовать шаблон проектирования, чтобы использовать только одну функцию, но которая подходит для всех веб-сервисов?
иногда я вижу письмо T , это так? если да, как я могу выполнить такую функцию?
P.S. Я мог бы передать перечисление и использовать переключатель, чтобы проверить имя перечисления и применить правильный заголовок, но каждый раз, когда мне нужно добавить новый WebService, мне нужно добавлять перечисление и код, я ищу для этого продвинутую технику.
Спасибо.