Получить методы ServiceContract от WCF
Я хочу перечислить все методы из службы WCF, которая имеет атрибут "OperationContractAttribute"
Для этого я использую следующий код:
var service = assembly.GetType(typeName);
if (service == null)
return webMethodsInfo;
var methodsInfo = service.GetMethods();
webMethods = methodsInfo.Where(method => method.GetCustomAttributes
(typeof(OperationContractAttribute), true).Any()).ToList();
Итак, OperationContractAttribute указывается в интерфейсе (IClassA), и когда я пытаюсь найти этот атрибут метода в классе ClassA, он не может его найти, однако я указал флаг true для метода GetCustomAttributes для поиска предков
2 ответа
Решение
Это будет делать
MethodInfo[] methods = typeof(ITimeService).GetMethods();
foreach (var method in methods)
{
if (((System.Attribute)(method.GetCustomAttributes(true)[0])).TypeId.ToString() == "System.ServiceModel.OperationContractAttribute")
{
string methodName = method.Name;
}
}
webMethods = service.GetInterface(serviceContract).GetMethods().Where(
method => method.GetCustomAttributes
(typeof(OperationContractAttribute)).Any())
.ToList();