Невозможно отфильтровать методы WCF для динамически созданного прокси - PullRequest
0 голосов
/ 04 января 2011

Несколько месяцев назад я работал над проектом, чтобы отобразить методы WCF и их параметры в раскрывающемся списке. В то время я создавал прокси-сервер с использованием Add Service Reference и жестко запрограммировал интерфейс сервиса в коде. Как я могу показать все методы, которые доступны в моем WCF в выпадающем списке Но когда я пытаюсь создать прокси динамически, чтобы сделать то же самое, приведенный ниже код не работает. Пожалуйста, помогите мне показать только методы, которые были определены мной.

// Using Dynamic Proxy Factory by Vipul Modi @ Microsoft
DynamicProxyFactory factory = new DynamicProxyFactory(txtService.Text);

// endpoints.            
string sContract = "";

foreach (ServiceEndpoint endpoint in factory.Endpoints)
{
    sContract = endpoint.Contract.Name;      //this is the service interface name, IAccountInfoService         
}
DynamicProxy proxy = factory.CreateProxy(sContract);
Type proxyType = proxy.ProxyType;

MethodInfo[] methods = proxyType.GetMethods();
foreach (var method in methods)
{
    //if (method.GetCustomAttributes(typeof(OperationContractAttribute), true).Length == 0)
    //    continue;
    string methodName = method.Name;
    ddlMethods.Items.Add(methodName);
}

Метод с комментариями кода. GetCustomAttributes (typeof (OperationContractAttribute), true). Длина не работает. Это не показывает никакой метод. Если я это закомментирую, то результатом будут все методы и переменные. Я хочу ограничить его только пользовательскими методами.

1 Ответ

0 голосов
/ 04 января 2011

Я ничего не знаю о DynamicProxyFactory, но, глядя на http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx, я думаю, что

1) прокси фактически не генерирует методы с атрибутом. Похоже, в этом нет необходимости, хотя я полагаю, что вы можете настроить код самостоятельно, чтобы это произошло.

2) если вы просто хотите получить список имен методов, кажется, вы можете получить его из factory.Contracts

...