Quando se trabalha com WCF você precisa de uma interface que irá definir o contrato do serviço a ser disponibilizado com esta tecnologia. Essa interface deve ser marcada com o atributo ServiceContract, e cada método desta interface que deverá estar disponível pelo serviço deve ser marcado com o atributo OperationContract.
Se você estiver muito confuso sobre o que falei até o momento aconselho que dê uma lida neste artigo de introdução aos serviços em WCF:
Introdução ao WCF.
O atributo
OperationContract contém uma série de proriedades, uma delas é a
Action (
detalhes). A propriedade
Action é usada para identificar de forma única a operação equivalente. No projeto em que estou trabalhando aparece a necessidade se determinar, em tempo de execução, qual a lista completa de actions das operações disponíveis em um dado contrato de serviço (a interface).
Após algumas análises conseguimos o seguinte código que, via reflexão, nos retorna uma lista de strings com todas actions de um dado serviço:
public static IList ObtenhaTodasOperacoes()
{
var actions = new List();
foreach (var method in typeof(T).GetMethods())
{
var att = (OperationContractAttribute)Attribute.GetCustomAttribute(method, typeof(OperationContractAttribute));
if (att != null) actions.Add(att.Action);
}
return actions;
}
Na verdade a implementação está mais relacionada a Reflections do que a WCF, porém é uma utilidade que os usuários de WCF podem precisar no decorrer de seu projeto.
É isso!
Frederico Policarpo Martins - frederico.sistemas@gmail.com
Formação:
Graduado em Ciência da Computação pela Universidade Federal de Goiás - UFG [Ano de graduação: 2007]
Certificações:
MCTS: .NET Framework 2.0 Windows Applications
MCTS: .NET Framework 3.5 Windows Workflow Foundation Applications
MCTS: .NET Framework 3.5 Windows Presentations Foundation Applications
Interesses:
Desenvolvimento de Software, Projeto de Software, Arquitetura de Software, Sistemas Desktop, Sistemas Web, Sistemas Distribuídos, Gerência de Projeto, Consultoria em Desenvolvimento, Metodologias Ágeis, Bancos de Dados, Sistemas Operacionais.
Experiênicia Profissionais:
- Estágio de 02/2005 a 02/2006 na EXIS LTDA : Desenvolvimento de Software com tecnologias Java
- Desde 01/2007 Desenvolvedor da Fibonacci - Soluções Ágeis.