Categoria: c#

Issue time05:32:00, por mrxrsd Email 1272 visualizações
Categorias: dotnet, c#

Não irei entrar no mérito sobre o que é o viewstate, mas dependendo do número de webcontrols que temos em nossa página ele se torna absurdamente grande, uma maneira de contornar isso é salvando ele na sessao.

Iremos criar um atributo no webconfig, caso ele esteja ativado ele salvará o viewstate na sessão.

C#:

protected override object LoadPageStateFromPersistenceMedium()
        {

            object objViewState;

            if (ConfigurationManager.AppSettings["ServerSideViewState"] != null &&
                ConfigurationManager.AppSettings["ServerSideViewState"].ToUpper().Equals("TRUE"))
            {
                objViewState = Context.Session["VIEWSTATE"];

                if (objViewState == null)
                {
                     return;
                    // Sessao expirada
                }
                               
                return objViewState;                
               
            }
            else
            {

                return base.LoadPageStateFromPersistenceMedium();
            }
                             
        }

        protected override void SavePageStateToPersistenceMedium(object state)
        {


            if (ConfigurationManager.AppSettings["ServerSideViewState"] != null &&
                ConfigurationManager.AppSettings["ServerSideViewState"].ToUpper().Equals("TRUE"))
            {
                Context.Session["VIEWSTATE"] = state;
            }
            else
            {

                base.SavePageStateToPersistenceMedium(state);
            }
                       
        }
Tags: c#, csharp, dotnet
Issue time04:17:00, por mrxrsd Email 695 visualizações
Categorias: dotnet, c#

Acredito que quase todo mundo já precisou fazer uma validação de domínio alguma vez e boa parte das vezes, a primeira idéia que vem é utilizar um enum, porém algumas pessoas esbarram em uma dificuldade que é não poder ter um "enum de strings", ou seja, setar um texto decente para exibição.

Leia mais »

Issue time02:41:22, por mrxrsd Email 187 visualizações
Categorias: dotnet, c#

Action Delegate

Os Action delegate encapsulam métodos que não possuem nenhum retorno e aceitam zero ou até quatro paramêtros. A sua assinatura é encontrada no System namespace.

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {

        public class Pessoa
        {
            private string _nome;

            public string nome
            {
                get { return _nome; }
                set { _nome = value; }
            }

            private int _idade;

            public int idade
            {
                get { return _idade; }
                set { _idade = value; }
            }

            bool _marcado;

            public bool marcado
            {
                get { return _marcado; }
                set { _marcado = value; }
            }
        }

        static void Main(string[] args)
        {

            // Declarando um simples delegate
            Action<Pessoa> action = EscrevaNome;

            // Criando nossa lista de pessoas
            List<Pessoa> vetPessoa = new List<Pessoa>{
                                               new Pessoa{ nome="Pessoa 1", idade=15},
                                               new Pessoa{ nome="Pessoa 2", idade=18},
                                               new Pessoa{ nome="Pessoa 3", idade=24},
                                               new Pessoa{ nome="Pessoa 4", idade=10},
                                               new Pessoa{ nome="Pessoa 5", idade=13}
                                             };

            // Chamando nosso delegate
            vetPessoa.ForEach(action);


            // Vamos supor que gostariamos marcar todas as pessoas que tem mais de 15 anos
            vetPessoa.FindAll(p => p.idade > 15).ForEach(p => p.marcado = true);

            // Primeiro utilizamos o método FindAll que aceita um Predicate para fazer o filtro
            // e depois, usamos o ForEach que aceita uma action para realizar o trabalho


        }

        public static void EscrevaNome(Pessoa p)
        {
            Console.WriteLine(p.nome);
        }
    }


}
Issue time05:15:03, por mrxrsd Email 229 visualizações
Categorias: c#, news, ide, visual studio

A devExpress lançou uma versão free do seu famoso Add-in CodeRush, o CodeRush Xpress ou apenas CodeRushX. Faça o download no próprio site do devexpress, apenas para Visual Studio 2008.

Download: clique aqui

Issue time20:43:39, por mrxrsd Email 2128 visualizações
Categorias: dotnet, c#

XPath é uma linguagem para buscar informação em um arquivo XML. O XPath é usado para navegar através dos atributos e elementos.

Primeiro, vamos conhecer um pouco a estrutura de um arquivo XML.

XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<sala>
        <aluno>
                <nome nacionalidade="br">Igor Ferraz</nome>
                <idade>19</idade>
                <idioma>inglês</idioma>
        </aluno>
</sala>

  • sala => document node
  • idade => element node
  • nacionalidade="br" => attribute node

Parent (Pai)
Cada elemento e atributo possui seu pai, no caso o elemento aluno é pai de nome, idade e idioma.

Children (Filho)
Os element nodes podem ter nenhum ou muitos filhos.

Siblings (Irmãos)
São nós que possuem o mesmo pai.

O XPath utiliza as chamadas "path expressions", expressões de caminho, para selecionar os nós no arquivo XML. As mais usadas são:

Expressão Decrição
nome_do_nó Seleciona todos os filhos do nó solicitado
/ Seleciona todos desde do nó raiz
// Seleciona os nós no documento que aceitam a expressão não importando aonde ele esteja
. Seleciona o nó corrente
.. Seleciona o pai do nó
@ Seleciona os atributos

Exemplos

  • sala => Seleciona todos os nós filhos do elemento sala.
  • /sala => Seleciona o elemento raiz sala.
  • sala/aluno => Seleciona todos elementos aluno que são filhos de sala.
  • //aluno => Seleciona todos os aluno, não importa de quem seja filho.
  • //@nacionalidade => Seleciona todos os atributos nacionalidade.

Predicados
São usados para buscar um nó especifico ou um nó que possui um determinado valor.

  • /sala/aluno[1] => Seleciona o primeiro elemento aluno que é filho de sala.
  • /sala/aluno[last()] => Seleciona o último elemento aluno que é filho de sala.
  • /sala/aluno[position()<5] => Seleciona os quatros primeiros elementos aluno que é filho de sala.
  • //aluno[@nacionalidade='en'] => Seleciona todos os elementos alunos não importa de quem seja filho porém que tenha o atributo nacionalidade = 'en'.
  • /sala/aluno[idade>18] => Seleciona todos os elementos alunos que são filho de sala e possuem idade maior que 18 anos.
  • /sala/aluno[idade>18]/nome => Seleciona todos os nomes dos alunos que são filho de sala e possuem idade maior que 18 anos.

Além disso, podemos usar wildcards, como é o caso do operador * e também podemos selecionar mais de um "caminho" através do operador |.

  • /sala/* => Seleciona todos os filhos do elemento sala.
  • //aluno/nome | //aluno/idade => Seleciona todos os nomes e idades de todos elementos aluno.

Lendo um arquivo XML utilizando C#

Primeiro vamos instanciar um objeto do tipo XmlDocument que vai ser o responsável por abrir
o arquivo XML e depois através do método Load, iremos indicar o caminho de um arquivo.

C#:

XmlDocument xDoc = new XmlDocument();
xDoc.Load("colegio.xml");

O métodos SelectNodes aceita uma expressão XPath e retorna uma coleção de nós.

C#:

XmlNodeList alunos = xDoc.SelectNodes("/sala/aluno");

Para exibir o nome de todos os alunos:

C#:

foreach (XmlNode a in alunos)
{
        Console.WriteLine(a.SelectSingleNode("nome").InnerText);
}
Tags: .net, c#, xml
Issue time11:33:25, por mrxrsd Email 486 visualizações
Categorias: dotnet, c#

Existem várias formas de se iterar, ou caminhar, por uma coleção. Irei mostrar diversas maneiras de iterar em uma coleção utilizando C#. Vamos imaginar que já existe uma classe chamada produto onde temos duas propriedades: nome e valor.

Leia mais »

Tags: .net, c#
Issue time10:17:00, por mrxrsd Email 636 visualizações
Categorias: dotnet, c#, framework, linguagens, java

Pra quem já está habituado com os conceitos de orientação a objetos e é um programador Java não irá ter muitos problemas para começar a programar em C#, porém temos alguns pontos que devemos chamar a atenção.

Leia mais »

Tags: .net, c#, dotnet, java
Issue time05:20:51, por mrxrsd Email 614 visualizações
Categorias: dotnet, c#

Existem duas formas de realizar um cast em C#:

Prefix-casting:

C#:

SuperClasse a;
SubClasse b = (SubClasse) a;

as-casting

C#:

SuperClasse a;
SubClasse b = a as SubClasse;

Leia mais »

Tags: .net, c#
Issue time12:30:29, por mrxrsd Email 1582 visualizações
Categorias: dotnet, c#, dicas

C#:

System.Reflection.Assembly assem = System.Reflection.Assembly.GetExecutingAssembly();  
Object objeto = assem.CreateInstance("Namespace.MinhaClasse");

Repare que é necessário o caminho completo para a instanciação Namespace e o nome da Classe. Em alguns casos você não quer instanciar uma classe do assembly atual, sendo assim iria retornar null, se este for o seu caso, você pode mandar ele achar o assembly da classe que você deseja de um outro jeito.

C#:

System.Reflection.Assembly assem  = System.Reflection.Assembly.GetAssembly(typeof(TipoDaClasse));

Basta passar o tipo da classe como referência e a lembrar que a referência também tem que ter sido feita no projeto.

Tags: .net, c#, csharp, dicas
Issue time04:46:12, por mrxrsd Email 268 visualizações
Categorias: c#, dicas

No caso de windows form.

C#:

Graphics graphics = this.CreateGraphics();
SizeF textSize = graphics.MeasureString("Esse é o blog programatik", this.Font);

Caso genérico (Windows/Web Forms)

C#:

Size textSize = TextRenderer.MeasureText("Esse é o blog programatik", font);

Repare que no caso genérico ele retorna um Size ao invés de um SizeF, ou seja, ele arredonda os valores, então quando for possível utilize o primeiro caso pois ele é mais preciso.

Tags: .net, dicas

Busca

Assine nosso Blog

Fazemos parte do Grupo

Hot Topics