Перечислите UriTemplate операционных контрактов WCF? - PullRequest
1 голос
/ 13 февраля 2010

Кто-нибудь знает способ перечисления UriTemplate различных контрактов на операции в WCF? Что я хочу сделать, так это каким-то образом на IntegrationTesting развернуть сервис с самостоятельным размещением, перебрать все контракты операций и распечатать UriTemplates, если это вообще возможно.

1 Ответ

4 голосов
/ 13 февраля 2010

Вы имеете в виду Действие? В OperationContract отсутствует свойство UriTemplate.

Если да, вы можете использовать отражение, чтобы получить методы этого типа, и из каждого метода получить атрибут OperationContractAttribute, чтобы получить его свойство Action.

var methods = typeof (IService1).GetMethods();
IEnumerable<string> actions = methods.Where(
    m => m.GetCustomAttributes(typeof (OperationContractAttribute), true).Count() > 0)
    .Select(m => 
        ((OperationContractAttribute)m.GetCustomAttributes(typeof (OperationContractAttribute), true).First()).Action);

Console.WriteLine(string.Join("\r\n",actions.ToArray()));

РЕДАКТИРОВАТЬ: как отмечает Марк, вы можете быть после WebGet, поэтому замените OperationContractAttribute на WebGetAttribute и Action на UriTemplate или любое другое свойство, которое вы хотели бы видеть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...