Mostrando postagens com marcador intellisense. Mostrar todas as postagens
Mostrando postagens com marcador intellisense. Mostrar todas as postagens

terça-feira, 26 de fevereiro de 2008

Extension Methods

Imagine a seguinte situação: Você tem uma aplicação que faz um cálculo qualquer. Para isso pega o valor de duas TextBox e apresenta o resultado em um Label. O que devemos ter cuidado é que C# é uma linguagem de programação de tipagem forte (strongly typed). Ao receber os dados dos TextBox você tem que primeiro converte-los para inteiros (neste caso). Aproveitando o código, validei a entrada de caracteres inválidos com o método TryParse da Classe Int32, que, em caso de falha na conversão nos retorna o valor padrão do Int32, ou seja, o “0”.

using System;

public partial class _Default : System.Web.UI.Page

{

protected void Button1_Click(object sender, EventArgs e)

{

int numero1;

int numero2;

Int32.TryParse(TextBox1.Text, out numero1);

Int32.TryParse(TextBox2.Text, out numero2);

Label1.Text = (numero1 + numero2).ToString();

}

}

No entanto, com os Extensions Methods podemos tornar nossa tarefa mais fácil. Cria uma nova classe e coloque o código como abaixo:

using System;

namespace Vitor.Canova.NET

{

public static class Extensoes

{

public static int ToInteger(this string field)

{

int valor;

Int32.TryParse(field, out valor);

return valor;

}

}

}

Pronto, nosso método vai extender a toda e qualquer string que for utilizada graças a palavra this no início da declaração dos parâmetros. Ela avisa ao compilador que aquele método pode ser usado por qualquer objeto do tipo defifido após essa palavra, no caso uma string. Agora vejamos como fica o código da página:

using System;

using Vitor.Canova.NET;

public partial class _Default : System.Web.UI.Page

{

protected void Button1_Click(object sender, EventArgs e)

{

Label1.Text = (

TextBox1.Text.ToInteger() +

TextBox2.Text.ToInteger()

).ToString();

}

}

Como podemos ver, o método pode ser invocado como se já pertencesse ao tipo string nos facilitando a conversão, sem falor no fato do Intellisense mostrar ele na lista de opções. Alguns fatos que devemos prestar atenção é o fato da classe é método de extensão serem do tipo static, o que faz com que não precisemos instanciar a classe para utiliza-la. Vale lembrar que foi adicionado o namespace da classe a página que vai utiliza-la também.

sexta-feira, 7 de dezembro de 2007

Intellisense sempre a espreita

Um recurso interessante que podemos contar no desenvolvimento de aplicativos, seja Web ou Desktop, é o intellisense. Clique para ver maiorPra quem não conhece pelo nome, intellisense é aquele “menu” de classes, métodos propriedades e etc que aparece enquanto você digita o código. Muita gente não sabe, mas o intellisense não aparece apenas quando digitamos algo como Me ou this. Na verdade você pode acioná-lo teclando CTRL + tecla de espaço. Ele é útil também para que não se digite nomes errados e/ou de entidades que não pertençam ao atual escopo. Um exemplo disso pode ser visto a seguir: Clique para ver maiorClique para ver maiorNa primeira imagem tento procurar uma variável que foi definida dentro do escopo do laço foreach. Na segunda imagem crio a mesma antes do laço e posso utilizá-la. Podemos ver que o intellisense enxerga melhor que nós o escopo de visibilidade das entidades. Porém, nem tudo são flores. Lembre-se que alguns objetos podem conter referências a objetos diferentes em tempo de execução. Um exemplo disso é o sender dos eventos.  Clique para ver maior Clique para ver maiorNo modo de edição aparecem apenas os métodos básicos herdados de sua classe base. Mas em tempo de execução ele tem a referência do objeto que disparou o evento e pode conter as mesmas propriedades e métodos da mesma.

quarta-feira, 31 de outubro de 2007

Facilidades .NET

Visual Studio em tela cheia

Essa dica é pra quem gosta de usar mais de 100% da tela, he, he. Para deixar o Visual Studio em tela cheia com poucos toques basta fazer Shift+Alt+Enter.

Auto completar

Definiu o nome de uma variável que está complicado de digital igual? Programa em C# e nunca sabe como está o case da palavra? Seus problemas acabaram. Inicie a digitação da palavra e depois clique Control+Espaço. Isso fará com que o intellisense apareça na tela com as opções. Isso é bom também para saber se a variável pertence aquele escopo. Se não aparecer nas opções é porque não faz parte daquele escopo.

Definir primeiro foco de uma página

Se você tem uma tela e quer que ao carregar a página uma determinada caixa de texto ou botão receba o foco, basta fazer assim:

    <form id="form1" DefaultFocus="txtBusca" runat="server">

       ...

    </form>

Definir botão que responderá ao ENTER na página

Para escolher qual botão será acionado quando for clicado no ENTER do teclado, basta fazer o seguinte código:

    <form id="form1" DefaultButton="btnBuscar" runat="server">

       ...

    </form>

Essas e outras tantas dicas podem ser visualizadas e também inseridas diretamnte no site .NET Tip of The Day Falow