Usuário com melhor resposta
Reflection

Pergunta
-
Respostas
-
Ola SirSmart,
Quando vc diz: "campos que me retornam de um WebService" vc esta se referindo ao fato que vc executou um metodo e quer listar as propriedades da classe de retorno do mesmo ou vc que gerar uma lista de todos os metodos q vc pode acessar deste web service e as propriedades de retorno ?
De qualquer forma segue um modelo de uso do reflection com webservieces:
/* * Webservice de Teste: * http://www.webservicex.net/RealTimeMarketData.asmx?WSDL */ using System; using System.Linq; using System.Web.Services.Protocols; namespace ConsoleApplication1 { class Program { [STAThread] static void Main(string[] args) { using (var service = new Service.RealTimeMarketData()) { Console.WriteLine("Descrição do Serviço: {0}", service.Url); Console.WriteLine(); // Elimiar metodos herdados: var metodosParent = typeof(SoapHttpClientProtocol).GetMethods(); // Pega a lista de metodos publicos do webservice: var metodos = service.GetType().GetMethods(); foreach (var metodo in metodos) { if (metodo.Name.EndsWith("Async")) continue; if (metodo.Name.StartsWith("add_")) continue; if (metodo.Name.StartsWith("remove_")) continue; if (metodo.Name.StartsWith("set_")) continue; if (metodo.Name.StartsWith("get_")) continue; if (metodosParent.Any(mp => mp.Name == metodo.Name)) continue; Console.WriteLine("- {0}", metodo.Name); if (metodo.ReturnType.Equals(typeof(void))) continue; // Carrega a lista das propriedade de retorno do metodo var propriedades = metodo.ReturnType.GetProperties(); foreach (var propriedade in propriedades) { Console.WriteLine("\t{0} ({1})", propriedade.Name.PadRight(20), propriedade.PropertyType.Name); } Console.WriteLine(); } Console.WriteLine("FIM"); Console.Read(); } } } }
Resultado:
Descrição do Serviço: http://www.webservicex.net/RealTimeMarketData.asmx - TopLists DateTime (String) StockLists (Stock[]) - Book Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecution Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecutionByMilliSecondsAfterMidNight Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecutionByReferenceNumber Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecutionByTime Symbol (String) DateTime (String) OrderLists (Order[]) - StatsSymbol Symbol (String) CompanyName (String) Market (String) DateTime (String) LastOrderTime (String) MatchedShares (Decimal) OpenOrders (Decimal) OpenShares (Decimal) BookedShares (Decimal) BookedOrder (Decimal) Price (Double) - Quote QuoteLists (Quote[]) FIM
Eu não sou pago para postar aqui... faço simplesmente porque eu quero....- Marcado como Resposta SirSmart sexta-feira, 26 de novembro de 2010 12:54
-
Olá SirSmart, Qual é o Tipo de retorno do seu WebService? Se o seu retorno for uma classe você pode usar o Reflection para buscar e extrair o valor das propriedades do Tipo retornado:
http://www.alexandreminato.com.br/category/Reflection.aspxhttp://msdn.microsoft.com/pt-br/library/b05d59ty.aspx
Se a sua necessidade é de sincronização de dados dê uma olhada nesta alternativa, que também permite gerar um banco local (Sql Server CE) a partir de um banco de dados remoto sem uso de Reflection:
http://www.linhadecodigo.com.br/artigo/2241/Sincronizacao-de-Dados-no-NET-Framework-35.aspxAtenciosamente
Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
- Marcado como Resposta SirSmart sexta-feira, 26 de novembro de 2010 12:54
-
Ola SirSmart,
O Exemplo que eu passei acima faz isso... ele lista todos os metodos e todas as propriedades dos tipo de retorno dos mesmos..... usando o reflection.
Mas no caso de vc retornar um DataTable basta vc listar os ColumnsNames
Eu não sou pago para postar aqui... faço simplesmente porque eu quero....- Marcado como Resposta SirSmart sexta-feira, 26 de novembro de 2010 12:53
Todas as Respostas
-
-
Ola SirSmart,
Quando vc diz: "campos que me retornam de um WebService" vc esta se referindo ao fato que vc executou um metodo e quer listar as propriedades da classe de retorno do mesmo ou vc que gerar uma lista de todos os metodos q vc pode acessar deste web service e as propriedades de retorno ?
De qualquer forma segue um modelo de uso do reflection com webservieces:
/* * Webservice de Teste: * http://www.webservicex.net/RealTimeMarketData.asmx?WSDL */ using System; using System.Linq; using System.Web.Services.Protocols; namespace ConsoleApplication1 { class Program { [STAThread] static void Main(string[] args) { using (var service = new Service.RealTimeMarketData()) { Console.WriteLine("Descrição do Serviço: {0}", service.Url); Console.WriteLine(); // Elimiar metodos herdados: var metodosParent = typeof(SoapHttpClientProtocol).GetMethods(); // Pega a lista de metodos publicos do webservice: var metodos = service.GetType().GetMethods(); foreach (var metodo in metodos) { if (metodo.Name.EndsWith("Async")) continue; if (metodo.Name.StartsWith("add_")) continue; if (metodo.Name.StartsWith("remove_")) continue; if (metodo.Name.StartsWith("set_")) continue; if (metodo.Name.StartsWith("get_")) continue; if (metodosParent.Any(mp => mp.Name == metodo.Name)) continue; Console.WriteLine("- {0}", metodo.Name); if (metodo.ReturnType.Equals(typeof(void))) continue; // Carrega a lista das propriedade de retorno do metodo var propriedades = metodo.ReturnType.GetProperties(); foreach (var propriedade in propriedades) { Console.WriteLine("\t{0} ({1})", propriedade.Name.PadRight(20), propriedade.PropertyType.Name); } Console.WriteLine(); } Console.WriteLine("FIM"); Console.Read(); } } } }
Resultado:
Descrição do Serviço: http://www.webservicex.net/RealTimeMarketData.asmx - TopLists DateTime (String) StockLists (Stock[]) - Book Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecution Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecutionByMilliSecondsAfterMidNight Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecutionByReferenceNumber Symbol (String) DateTime (String) OrderLists (Order[]) - LastExecutionByTime Symbol (String) DateTime (String) OrderLists (Order[]) - StatsSymbol Symbol (String) CompanyName (String) Market (String) DateTime (String) LastOrderTime (String) MatchedShares (Decimal) OpenOrders (Decimal) OpenShares (Decimal) BookedShares (Decimal) BookedOrder (Decimal) Price (Double) - Quote QuoteLists (Quote[]) FIM
Eu não sou pago para postar aqui... faço simplesmente porque eu quero....- Marcado como Resposta SirSmart sexta-feira, 26 de novembro de 2010 12:54
-
Tenho um método no WebService que me retorna todos os dados que tenho na minha tabela. Porem gostaria de pegar todos os campo dessa tabela em tempo de execução e criar uma tabela no sql na minha maquina local. Pediram para eu usar o reflection, mas não tenho muito o conceito do que ele faz. Ele serve para isso mesmo??
Só precisaria pegar todos os campos dessa tabela e criar uma nova tabela local...
Como posso fazer??
Obrigado
SirSmart -
Olá SirSmart, Qual é o Tipo de retorno do seu WebService? Se o seu retorno for uma classe você pode usar o Reflection para buscar e extrair o valor das propriedades do Tipo retornado:
http://www.alexandreminato.com.br/category/Reflection.aspxhttp://msdn.microsoft.com/pt-br/library/b05d59ty.aspx
Se a sua necessidade é de sincronização de dados dê uma olhada nesta alternativa, que também permite gerar um banco local (Sql Server CE) a partir de um banco de dados remoto sem uso de Reflection:
http://www.linhadecodigo.com.br/artigo/2241/Sincronizacao-de-Dados-no-NET-Framework-35.aspxAtenciosamente
Se o post foi útil marque como resposta. - Advanced Web Application - MCP - Twitter: @mpghelli
- Marcado como Resposta SirSmart sexta-feira, 26 de novembro de 2010 12:54
-
Ola SirSmart,
O Exemplo que eu passei acima faz isso... ele lista todos os metodos e todas as propriedades dos tipo de retorno dos mesmos..... usando o reflection.
Mas no caso de vc retornar um DataTable basta vc listar os ColumnsNames
Eu não sou pago para postar aqui... faço simplesmente porque eu quero....- Marcado como Resposta SirSmart sexta-feira, 26 de novembro de 2010 12:53