Добавление типа WebService в общедоступный статический метод пользовательского класса

Кажется, у меня возникли трудности с реализацией использования для нескольких пространств имен нескольких сервисов. Например, у меня есть следующие службы в качестве пространств имен:

ServiceMemberIDSS, ServiceVenueIDSS, ServiceProspectIDSS и т. д. и т. д.

У всех этих служб есть свойство с именем AuthorizeHeader.

Я хотел бы создать метод, в котором пользователь может ввести пространство имен для использования.

Например, чтобы вызвать ServiceMemberIDSS, я мог бы включить using ServiceMemberIDSS; и иметь этот метод:

public static AuthorizeHeader Authorize()
{
    AuthorizeHeader _authHeader = new ServiceMemberIDSS.AuthorizeHeader();
    _authHeader.SetCredentials();
    return _authHeader;
}

И назовите это так: Authorize()

Но как я могу изменить это, чтобы любой из них был возможен:

Authorize.ServiceMemberIDSS();
Authorize.ServiceVenueIDSS();
Authorize.ServiceProspectIDSS();

or

Authorize(ServiceMemberIDSS);
Authorize(ServiceVenueIDSS);
Authorize(ServiceProspectIDSS);

Как это можно сделать? Что мне нужно сделать с методом авторизации, чтобы это работало любым из этих способов?


person Solomon Closson    schedule 20.02.2014    source источник
comment
Как насчет создания перегрузок для вашего метода Authorize? Я не могу придумать другого способа сделать это, поскольку вы хотите получить доступ к методу в разных классах.   -  person JW Lim    schedule 20.02.2014
comment
С перегрузками все в порядке, но как это сделать с пространствами имен??   -  person Solomon Closson    schedule 20.02.2014
comment
Плохо, я неправильно прочитал вопрос и подумал, что это разные классы. Ну, судя по всему, рефлексией можно добиться чего угодно, но я не знаком с этой темой. Вы можете взглянуть на этот вопрос stackoverflow.com/questions/9948518/ . Но, честно говоря, если бы это было всего 3 пространства имен, я бы лично пошел по более простому пути и добавил параметр char, int или string к Authorize, а затем просто решил, какой метод пространства имен вызывать с помощью условий (if-else).   -  person JW Lim    schedule 20.02.2014
comment
Хорошо, но я знаю только 1 способ вызова пространств имен, и это с помощью using, есть ли другой способ?   -  person Solomon Closson    schedule 20.02.2014
comment
Я так не думаю. Вам придется добавить директиву using для всех трех пространств имен, а затем вызывать различные методы с их полными именами, но я могу ошибаться. Другой вопрос, похожий на ваш: stackoverflow.com/ вопросы/5258253/   -  person JW Lim    schedule 20.02.2014
comment
Что ж, мне нужно передать это в такую ​​функцию: ServiceMemberIDSS.Member[] theMember = getMemberList(Authorize("ServiceMemberIDSS"), true, true, true, true, true); первый параметр имеет тип AuthorizeHeader, но это будет означать, что мне придется определить метод этого типа, даже если возвращаемое значение имеет этот тип, верно? Если это неправильно, то каким должен быть метод Authorize?   -  person Solomon Closson    schedule 20.02.2014
comment
Я думаю, вам следует просто определить метод Authorize для каждого из ваших сервисов/пространств имен. Затем вы можете просто вызвать namespaceName.Authorize, который вернет правильный тип. Вы также можете сократить имя пространства имен с помощью using svcMember = ServiceMemberIDSS, а затем вызвать метод с помощью svcMember.Authorize.   -  person JW Lim    schedule 20.02.2014