Как я могу показать все методы, которые доступны в моем WCF в раскрывающемся списке - PullRequest
1 голос
/ 13 ноября 2010

Как я могу показать все методы, которые доступны в моем WCF в выпадающем списке. Мне нужно показать только те методы, которые выставлены клиенту. У меня работает следующий код, но он отображает гораздо больше методов, чем ожидалось. Кажется, он отображает все.

MethodInfo[] methods = typeof(IntlService.ClientDataServiceClient).GetMethods();

//// sort methods by name
Array.Sort(methods,
        delegate(MethodInfo methods1, MethodInfo methods2)
        { return methods1.Name.CompareTo(methods2.Name); });

foreach (var method in methods)
{
    string methodName = method.Name;
    ddlMethods.Items.Add(methodName);
}

Как я могу ограничить отображение только теми, которые я определил

Ответы [ 2 ]

1 голос
/ 13 ноября 2010

Если вы хотите получить только методы, определенные вашим классом, в данном случае IntlService.ClientDataServiceClient, тогда измените ваш вызов на GetMethods() следующим образом:

MethodInfo[] methods = typeof(IntlService.ClientDataServiceClient).GetMethods(BindingFlags.DeclaredOnly);

Если вы хотите получить только те методы, которые объявлены как методы службы, вам нужно проверить атрибуты методов:

MethodInfo[] methods = typeof(IntlService.ClientDataServiceClient).GetMethods(BindingFlags.DeclaredOnly);

// sort here...

foreach( var method in methods )
{
    if( method.GetCustomAttributes(typeof(System.ServiceModel.OperationContractAttribute), true).Length == 0 )
        continue;

    string methodName = method.Name;
    ddlMethods.Items.Add(methodName);
}
0 голосов
/ 13 ноября 2010
foreach (var method in methods)
{
   // Add the line below
   if (method.GetCustomAttributes(typeof(OperationContractAttribute)).Length > 0)
   {
      string methodName = method.Name;
      ddlMethods.Items.Add(methodName);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...