Arquivo

Archive for the ‘C#’ Category

Base64 : Codificando Strings com Base64 no C#

Uma característica muito importante quando é feito o transporte de dados via string ou via XML é a codificação dos seus caracteres. Uma vez que a string seja decodificada com o encode errado todos os caracteres especiais da string como, por exemplo, os acentos são substituídos por um caractere inválido.

Uma boa prática no transporte de dados no formato de string é trabalhar com codificação Unicode ou tipo de codificação UTF-8 e converter o texto em base64.

A conversão do texto em base64 permite que os caracteres especiais (acentos e símbolos) sejam preservados uma vez que ao converter o texto em base64 trafegaremos informações no formato de números e caracteres mais simples que não possuem caracteres especiais.

Isso garante também que a aplicação que consumir o seu serviço sempre consiga decodificar os caracteres especiais, visto que o que é enviado é o código da tabela ASCII do caractere especial.

Criei uma classe estática com o nome Base64 que faz a codificação e a decodificação para a base64.

Classe estática Base64

Veja logo abaixo o exemplo de código de conversão de uma string para base64:

Base64 Implementação

Segue link com os fontes do exemplo de utilização da Base64: Fontes Projeto Base64

Anúncios

Programa Gratuito de Treinamento Plataforma .NET Presencial

A Microsoft oferece cursos gratuitos de treinamento na plataforma .NET atraves do programa Student-to-Business.

A Microsoft oferece estes cursos nas seguintes areas:

– Infraestrutua,

– Design

– Desenvolvimento de Sistemas e Banco de dados

– Ferramentas de TI para a Gestao

O programa Students to Business é uma iniciativa da Microsoft, dos Parceiros da Microsoft e as principais universidades do país com o objetivo de capacitar estudantes nas áreas de TI e oferecer oportunidades de emprego.

Para participar acesse o link do programa Student to Business :

http://www.microsoft.com/brasil/educacao/comunidadeacademica/estudantes/s2b.mspx

http://proform.msdnbrasil.com.br/Programa.aspx

 

MSDN Virtual Labs

Virtual Labs

Um recurso muito interessante do MSDN e o Virtual Labs.

O Virtual Labs e um programa que permite executar como se fosse uma maquina virtual na web e testar uma tecnologia especifica nessa maquina.

Ela permite que de maneira rapida o usuario possa avaliar e testar uma tecnologia microsoft utilizando hands-on labs que voce pode completar em menos de 90 minutos.

O Virtual Labs e gratuito, porem so existe a versao em ingles.

Vale a pena conferir: http://msdn.microsoft.com/pt-br/aa570323

Conversão de uma Lista de Objetos para um DataSet

Neste post segue o código de uma Classe de Extensão que converte uma Lista Tipada num DataSet.

Para o exemplo criei uma classe de nome ‘Produto’ e um Enumerador de nome TipoProduto’, conforme diagrama abaixo:

Diagrama de Classe

Diagrama de Classe

Segue exemplo de Código logo abaixo para utilização do método ToDataSet.

Enumerador TipoProduto

Enumerador TipoProduto

Classe Produto
Classe Produto

.

Converte Lista para DataSet

Converte Lista para DataSet

A biblioteca assim como o exemplo do código estão no link logo abaixo:

ConvertListToDataSet.rar

Gerando Valores padrão a partir de valores nulos com o operador Coalescente

Em geral, desenvolvedores odeiam valores de tipo nulo. O tipo nulo faz parte da teoria dos bancos de dados relacionais, quando uma informação representa um valor desconhecido ele é dado como do tipo nulo, eventualmente o tipo nulo quando é passado para uma variável que não o aceita provoca uma exceção no código que nem sempre é muito fácil de ser encontrada.

O operador coalescente permite verificar se uma variável é nula e mudar o seu valor para um valor conhecido. O operador coalescente no C# é representado por duas interrogações “??”.

Veja exemplo abaixo de utilização:

Operador Coalescente

Operador Coalescente

O operador coalescente permite que um valor padrão seja setado na variável em caso desta variável ser nula.

Categorias:.NET, C#, Desenvolvimento Tags:, ,

Criando Seções Customizadas em .NET

Neste post iremos ver como montar uma seção customizada para um arquivo de configuração App.config ou Web.config

No exemplo iremos migrar os dados de um arquivo “.INI” com o formato abaixo para seções customizadas do app.config

Conteúdo Arquivo .INI

arquivo .INI

arquivo .INI

Existem três opções para a criação de uma seção customizada no app.config ou no web.config no .NET:

Opção 1: Utilizando a Classe SingleTagSectionHandler

A Classe SingleTagSectionHandler identifica o trecho da seção customizada em runtime e identifica

quais são as propriedades da seção. Para obter os dados da Seção é necessário fazer cast para o tipo Hastable.

Veja o exemplo Abaixo:

Arquivo App.Config trabalhando com SingleTagSectionHandler

Arquivo App.Config trabalhando com SingleTagSectionHandler

Utilizando a Classe SingleTagSectionHandler

Utilizando a Classe SingleTagSectionHandler

Opção 2: Utilizando a Classe NameValueSectionHandler

A Classe NameValueSectionHandler trata a seção como se fosse uma estrutura de dados do tipo NameValueCollection.

Para obter os dados da Seção é necessário fazer cast para o tipo NameValueCollection.

Veja exemplo abaixo:

Arquivo App.config utilizando a classe NameValueSectionHandler

Arquivo App.config utilizando a classe NameValueSectionHandler

Utilizando a Classe NameValueSectionHandler

Utilizando a Classe NameValueSectionHandler

Opção 3: Criar uma Classe que Herde de ConfigurationSection

Esta opção permite criar uma classe que represente os nós da seção customizada no app.config/web.config.

Principal vantagem é que não há a necessidade de fazer converção de tipos, visto que as informações da seção

são propriedades do objeto.

Para esta opção não fiz exemplo de código, caso queira ver como funciona segue logo abaixo algumas fontes muito boas:

Explica em 3 passos como criar a classe que custimza a seção

http://haacked.com/archive/2007/03/12/custom-configuration-sections-in-3-easy-steps.aspx

Explica cada classe do namespace System.Configuration

http://www.codeproject.com/KB/dotnet/mysteriesofconfiguration.aspx

How to: Create Custom Configuration Sections Using ConfigurationSection

http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

Outra grande vantagem em utilizar a opção 3 é na necessidade de criptografar a seção customizada no App.config/web.config.

No caso o desenvolvedor saberia as propriedades da seção uma vez que estas propriedades é possível acessá-las pela classe

que herda do objeto ConfigurationSection, mas não saberia o conteúdo das suas propriedades e nem a disposição delas no

app.config/web.config.

No caso das duas outras opções uma vez criptografada a seção não daria para saber quais são as propriedades da seção.

Das opções 1 e 2 fiz um programa de exemplo de funcionamento de cada uma delas.

Caso queira baixar o exemplo para estudar segue link do programa de teste logo abaixo:

CustomSection.rar

Aceitando dado nulo com tipo Nullable

Algumas vezes precisamos passar o valor nulo ou não passar valor algum para uma variável da aplicação. Isto não é muito bom, mas em algumas circunstâncias, como por exemplo para tratar dados que vem do banco de dados, este recurso se torna muito útil.

Quando obtemos os dados do banco no formato de um DataReader ou no formato de um DataSet e obtemos o valor do dado, como por exemplo o valor de um campo inteiro, devemos declarar a variáveis que recebem o valor como do tipo object porque o valor do parâmetro pode retornar nulo e o tipo object aceita valor nulo.

Mas podemos criar variáveis que aceitam valores nulos, basta na declaração da variável explicitar que ela aceita valor nulo conforme abaixo:

Teste Tipo Nullable

Teste Tipo Nullable

No exemplo acima Nullable<int> valorNulavel é a mesma coisa que int? valorNulavelAbrevidado. A primeira opção é a declaração completa a segunda opção é uma abreviação da declaração.

Só há uma contrapartida em utilizar o tipo nullable na declaração de variáveis. No exemplo acima criei duas variáveis do tipo inteiro e inicializei ambas como nulo, porém a variável valorNulavel setei o seu valor para 2. E efetuei a soma.

Observe que a soma não é efetuada, visto que o tipo nulo não é reconhecido como um inteiro válido.