Márcio Fábio Althmann

.NET Tips And Tricks

Siga-me no Twitter!RSS Feeds

  • Início
  • Consultoria
  • Contato
wlEmoticonsmile.png

Atributo DebuggerDisplay

06/09/10

Escrito por Márcio Fábio Althmann em .NET Framework

3 comentários

Olá, tudo bem?

No nosso trabalho, passamos boa parte do tempo debugando, ou depurando Smile aplicações, postei dois artigos sobre as novidades na depuração de código no Visual Studio 2010,aqui, aqui e aqui.

Esse três artigos que publiquei, mostram recursos do Visual Studio 2010, mas desde a versão 2.0 do .NET Framework, temos um atributo chamado DebuggerDisplay.

Com o DebuggerDisplay conseguimos definir, o que gostaríamos de ver facilmente, na janela onde podemos navegar entre as propriedades de uma classe durante a depuração do código.

Detalhe que o atributo não está limitado ao C#, podemos utilizar tranquilamento com VB.NET, F# e C++.

Vamos imaginar a classe Posicao abaixo, onde eu armazeno o valor X e Y de um determinado objeto de um jogo por exemplo.

class Posicao
{
    public int X { get; set; }
    public int Y { get; set; }
}

 

Agora instanciamos a classe, e definimos alguns valores.

static void Main(string[] args)
{
    var posicao = new Posicao {X = 50, Y = 100};
}

 

Essa é uma classe simples, mas da para ver bem o funcionamento do DebuggerDisplay. Agora compilando o programa, e depurando o mesmo, quero descobrir o valor de X e Y, então eu dependo da janela Locals onde posso navegar nas propriedades do objeto, ou navegando nos menus abertos sobre o objeto ao passar o mouse pelo mesmo.

DebuggerDisplay01

Na imagem acima, da para ver que a coluna value, da janela Locals mostra o tipo do meu objeto, que nesse caso é OperadoresCSharp.Posicao, o mesmo ocorre com o menu flutuante, em ambos os casos eu preciso expandir o objeto para ver os valores das propriedades.

Agora utilizando o atributo DebuggerDisplay, que está no namespace System.Diagnostics eu consigo definir, por exemplo, quais propriedades da minha classe eu quero mostrar diretamente no lugar onde é mostrado o tipo do objeto.

[DebuggerDisplay("{X} {Y}")]
class Posicao
{
    public int X { get; set; }
    public int Y { get; set; }
}

No atributo, eu consigo colocar entre {} o nome de uma propriedade, que é o que fiz, agora na depuração já melhorou um pouco.

DebuggerDisplay02

Já melhorou, só que ainda não é o ideal, o que é 50, 100? Só estou mostrando os valores das propriedades, mas não sei de qual propriedade é o valor 50 ou 100, felizmente conseguimos “nomear”, e fazer algo assim X = {X}.

[DebuggerDisplay("X={X} Y={Y}")]
class Posicao
{
    public int X { get; set; }
    public int Y { get; set; }
}

Agora sim, na hora de depurar o código, fica mais claro saber que o 50 é do X e 100 é do Y.

DebuggerDisplay03

Mas isso funciona só com propriedades? Felizmente não, vamos imaginar que por algum motivo, é importante saber a soma de X e Y, e eu possuo um método chamado SomarValores(), consigo utilizar a mesma sintaxe passando ao invés do nome da propriedade, o nome do método, veja abaixo.

[DebuggerDisplay("X={X} Y={Y} Soma dos valores = {SomarValores()}")]
class Posicao
{
    public int X { get; set; }
    public int Y { get; set; }

    public int SomarValores()
    {
        return X + Y;
    }
}

DebuggerDisplay04

Muito simples e útil, colocando um simples atributo, consigo definir valores úteis, que ajudem na hora da depuração do projeto.

Para finalziar, o atributo não está limitado a classes, posso utilizar com.

  • Classes
  • Structs
  • Delegates
  • Enumeradores
  • Campos
  • Propriedades
  • Assemblies

Abraços e até o próximo post.

.NET Framework, C#
wlEmoticonsmile.png

Livro gratis sobre Windows Phone 7

05/09/10

Escrito por Márcio Fábio Althmann em Silverlight

Nenhum comentário

E ai pessoal, tudo bem?

Bom a notícia não é tão nova, mas fica aqui a dica para quem ainda não viu Smile.

Foi disponibilizado para download o preview do livro Programming Windows Phone 7 Series, não é o livro todo, é só um preview, mas é uma ótima fonte para iniciar os estudos. Clique na imagem abaixo para fazer o download.

Livro

Abraços.

Silverlight, Windows Phone 7
wlEmoticonsmile.png

C#– Keyword Partial

02/09/10

Escrito por Márcio Fábio Althmann em C#

1 comentário

Olá pessoal, tudo bem?

Tudo muito agitado por aqui, mas voltei a dar atenção ao blog finalmente!! E além de continuar postando sobre Silverlight, Windows Phone 7, vou continuar mostrando alguns truques que podemos utilizar no C#, como os operadores pouco utilizados que já mostrei aqui e aqui.

Hoje vou falar sobre a keyword partial.

Com a keyword partial conseguimos dividir uma mesma classe, struct ou interface em mais de um arquivo. Mas quando o projeto é compilado e o código gerado, esses arquivos são “mesclados”. Quem trabalha com Windows Forms e ainda não viu, veja que um formulário é dividido em vários arquivos mas utilizando partial.

Dividir as classes em vários arquivos, pode ser útil em projetos ou classes grandes, não preciso abrir aquela classe com 100 métodos (alguém tem algo assim? Smile ), ou como eu mostrei aqui no exemplo onde utilizo validação com DataAnnotations  no LINQ To SQL só consigo fazer esse tipo de “truque” graças as classes parciais.

Bom chega de falar e vamos aos exemplos que é muito melhor.

Uma classe Calculadora com 4 métodos simples.

class Calculadora
{
    public int Somar(int valor1, int valor2)
    {
        return valor1 + valor2;
    }

    public int Diminuir(int valor1, int valor2)
    {
        return valor1 - valor2;
    }

    public int Multiplicar(int valor1, int valor2)
    {
        return valor1 * valor2;
    }

    public int Dividir(int valor1, int valor2)
    {
        return valor1 / valor2;
    }
}

Posso dividir essa classe em duas da seguinte forma.

partial class Calculadora
{
    public int Somar(int valor1, int valor2)
    {
        return valor1 + valor2;
    }

    public int Diminuir(int valor1, int valor2)
    {
        return valor1 - valor2;
    }
}

partial class Calculadora
{
    public int Multiplicar(int valor1, int valor2)
    {
        return valor1 * valor2;
    }

    public int Dividir(int valor1, int valor2)
    {
        return valor1 / valor2;
    }
}

Uma  dúvida frequente, é se as classes precisam estar no mesmo Arquivo.cs, e a resposta é não, posso ter vários arquivos.cs com nomes diferentes contendo cada um, um pedaço da minha classe parcial.

Outro detalhe, é que para ele mesclar as classes, elas devem pertencer ao mesmo namespace.

Só para mostrar o código IL gerado, vemos que só existe uma classe Calculadora com os 4 métodos, mesmo dividindo o código em duas classes parciais.

IL

E não tenho restrições quanto a herança e implementação de interfaces. Veja o código abaixo.

class PessoaFisica : Pessoa, IDisposable
{
    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

Esse código poderia ser dividido da seguinte forma.

partial class PessoaFisica : Pessoa
{

}

partial class PessoaFisica : IDisposable
{
    public void Dispose()
    {
        throw new NotImplementedException();
    }
}

Uma keyword simples, que pode ser muito útil na organização de determinados projetos.

Abraços e até o próximo artigo.

C#
wlEmoticonopenmouthedsmile.png

Partículas–Windows Phone 7

31/08/10

Escrito por Márcio Fábio Althmann em Novidades

2 comentários

E ai pessoal tudo bem?

As últimas semanas foram de muito trabalho, por isso o blog ficou um pouco parado. Mas a partir de hoje, volto com força total aqui no blog, e tenho ótimas novidades para o pessoal que gosta de Silverlight.

A primeira é que estou montando uma comunidade com meu amigo Dorta, específica sobre Silverlight, com lista de discussão, artigos, webcasts e muito mais. Estamos acertando os últimos detalhes, mas em breve todos poderão participar da nova comunidade.

A novidade é uma idéia que pode dar muito certo, mas só para deixar todo mundo curioso, pode ser que saia um livro de Silverlight logo logo, novamente eu e o Dorta estamos montando isso.

Agora, para não passar em branco o post, todo mundo sabe que o lançamento do Windows Phone 7 está próximo. Muitas apliações e jogos estão em desenvolvimento, e é muito divertido “brincar” desenvolvendo para o Windows Phone 7, fiquem com um vídeo de um sistema de particulas que estou criando, quando ficar pronto, ou avançar mais o mesmo, postarei aqui como criar algo assim. Esse vídeo está com 200 partículas, iria mostrar rodando com 1000, mas no emulador não ficou muito legal. Aceito doações de protótipos de aparelhos com o Windows Phone 7 Open-mouthed smile.

Abraços.

Partículas Windows Phone 7 from Márcio Fábio Althmann on Vimeo.

Novidades, Pessoal, Silverlight

Comunidade

20/08/10

Escrito por Márcio Fábio Althmann em Pensamentos

Nenhum comentário

Ontem tive o prazer de conversar como Luciano Palma e com o Fabrício Sanches sobre comunidade, e outros assuntos. Na verdade acho que eu e o Fabrício simplesmente paramos e vimos quem realmente sabe o que Comunidade significa falar :) o Palma é o cara, quem o conhece sabe o que estou falando.

Hoje fui olhar, meus e-mails e vi que ele comentou no meu post sobre um e-mail que recebi agradecendo pelo blog aqui.

Nem pedi autorização dele, mas vou colocar o comentário dele logo abaixo, não preciso falar mais nada, simplesmente perfeito.

Comunidade e Redes. Duas palavras com muita magia por trás delas.

Quando você faz parte delas, é como se suas fronteiras simplesmente deixassem de existir. Numa Comunidade (que é uma Rede), cada um aprende com base e seus interesses, e compartilha de forma genuína com os demais. É como se todos aprendessem juntos. Colaborar para este processo tem seu quê de magia e nos traz um sentimento muito positivo.
Esse retorno subjetivo é o Reconhecimento mais importante. Benefícios materiais? Eles vêm depois, mas são consequência. Não deveriam ser vistos como fim… (mas sim como meios de continuar evoluindo).

Luciano Palma

Abraços

Pensamentos

Meio Bit – Windows Phone 7

19/08/10

Escrito por Márcio Fábio Althmann em Pessoal

Nenhum comentário

E ai pessoal blz?

Bom eu também escrevo para o site Meio Bit, e comecei hoje uma série de posts sobre o Windows Phone 7, claro nada muito avançado, porque o público aqui do blog é diferente do público do Meio Bit.

Então quem quiser conferir o primeiro post é só clicar aqui.

Abraços.

Pessoal, Windows Phone 7

Moderador do Fórum de Silverlight

18/08/10

Escrito por Márcio Fábio Althmann em Pessoal

Nenhum comentário

E ai pessoal blz?

A falta de posts no blog é puramente falta de tempo, muito trabahlo, mas muito mesmo, mas em breve vou recuperar o tempo perdido e postar muitas coisas.

Esse post é só para anunciar que agora também sou moderador do Fórum de Silverlight no MSDN Brasil, vou moderar o Forum junto com meu amigo Ricardo Dorta, e em breve nós dois teremos uma ótima novidade para a comunidade de Silverlight Brasileira, fiquem ligados, o projeto está evoluindo e o resultado vai ser ótimo.

Então fiquem a vontade para tirar dúvidas lá no fórum ou mesmo mandando e-mail aqui pelo site.

Abraços.

Pessoal, Silverlight
Ribbon.png

Ribbon para Silverlight

14/08/10

Escrito por Márcio Fábio Althmann em Silverlight

1 comentário

Depois que mostrei o Ribbon para WPF aqui, recebi muitos e-mails perguntando se teria algo parecido para Silverlight, confesso opção gratuita eu nunca encontrei, mas resolvi procurar hoje e vi um controle em estágio Beta ainda que vale muito dar uma olhada, é da empresa DevElements, e o controle pode ser visto aqui.

Ribbon

Agora caso queiram comprar algo, tenho algumas dicas como os controles da Telerik, Infragistics, ComponentArt ou ComponentOne.

Abraços.

Silverlight

Zoom.it

06/08/10

Escrito por Márcio Fábio Althmann em Dicas

Nenhum comentário

A Microsoft lançou um site chamado Zoom.it nele conseguimos criar um “Screen shot” gigante de um site, e tudo com Silverlight e Deepzoom.

Vou deixar para explicar o Deep Zoom, fica para outro dia, mas o resultado é muito legal, e ainda conseguimos adicionar o Deep Zoom em sites, como fiz abaixo com meu site, e ele também cria uma url curta. Olha o meu site aqui http://zoom.it/hQBR.

Abraços.

Dicas, Silverlight, XAML
wlEmoticonwinkingsmile.png

Ribbon para WPF

03/08/10

Escrito por Márcio Fábio Althmann em C#

3 comentários

Desde que a Microsoft lançou o menu Ribbon no Office, creio que foi amor a primeira vista com a maioria das pessoas, apesar de muito diferente daquele velho e bom menu padrão, utilizando Ribbon, tudo fica mais organizado.

Infelizmente o WPF não possuia o menu Ribbon nativo para utilizarmos em nossos projetos, digo nativamente por que com componentes de terceiros, como por semplo da Telerik, eu já utilizei Ribbon eu vários projetos.

Ontem, dia 02/08 foi liberado o RTM do Ribbon for WPF um menu do estilo Ribbon, para WPF, construído pela própria Microsoft, já utilizei esse menu a algum tempo, mas ainda era Beta e não funcionou bem.

Para começar, podemos fazer download do menu clicando aqui, temos a opção de fazer download do instalador do Ribbon, e também de exemplos de utilização e do código fonte, isso mesmo, podemos olhar o código fonte do projeto, bons estudos Winking smile. Além do link para download, clicando aqui vemos a página de documentação do menu.

A primeira mudança quando instalamos o Ribbon, é que ganhamos um novo tipo de projeto para WPF Ribbon Application.

Ribbon01

Com o projeto criado, por padrão é criado um menu com itens básicos, o que é muito bom para entender o funcionamento do controle. Abaixo imagem do menu padrão criado com o código gerado.

Ribbon02

<ribbon:Ribbon x:Name="Ribbon">
    <ribbon:Ribbon.ApplicationMenu>
        <ribbon:RibbonApplicationMenu SmallImageSource="Images\SmallIcon.png">
            <ribbon:RibbonApplicationMenuItem Header="Hello _Ribbon"
                                              x:Name="MenuItem1"
                                              ImageSource="Images\LargeIcon.png"/>
        </ribbon:RibbonApplicationMenu>
    </ribbon:Ribbon.ApplicationMenu>
    <ribbon:RibbonTab x:Name="HomeTab"
                      Header="Home">
        <ribbon:RibbonGroup x:Name="Group1"
                            Header="Group1">
            <ribbon:RibbonButton x:Name="Button1"
                                 LargeImageSource="Images\LargeIcon.png"
                                 Label="Button1" />

            <ribbon:RibbonButton x:Name="Button2"
                                 SmallImageSource="Images\SmallIcon.png"
                                 Label="Button2" />
            <ribbon:RibbonButton x:Name="Button3"
                                 SmallImageSource="Images\SmallIcon.png"
                                 Label="Button3" />
            <ribbon:RibbonButton x:Name="Button4"
                                 SmallImageSource="Images\SmallIcon.png"
                                 Label="Button4" />

        </ribbon:RibbonGroup>

    </ribbon:RibbonTab>
</ribbon:Ribbon>

Como podem ver, não existe segredo na criação de Tabs, Grupos e Botões. Agora conseguimos utilizar um ótimo menu com Ribbon, sem recorrer a outras empresas.

Um outro detalhe, é que na Toolbox do Visual Studio, uma nova aba é criada, com todos os controles disponíveis para a criação do menu com Ribbon.

Ribbon03

Aproveitem o Ribbon for WPF e é hora de começar a repensar a estrutura dos menus das aplicações Winking smile.

Abraços.

C#, WPF, XAML
12345»...Último »
    • Comentários recentes
    • Artigos populares
    • Arquivos
    • Marcadores
    • Categorias
    • .NET Framework (5)
    • C# (27)
    • Dicas (16)
    • Eventos (7)
    • LINQ (1)
    • LINQ To SQL (1)
    • Novidades (9)
    • Pensamentos (7)
    • Pessoal (9)
    • Ruby (1)
    • Silverlight (29)
    • Sketchflow (3)
    • Team Foundation Server (3)
    • Testes Unitários (1)
    • Visual Studio .NET (12)
    • Visual Studio Team System (1)
    • WebCasts (2)
    • Windows Phone 7 (2)
    • WPF (11)
    • XAML (9)
    .net .NET Framework C# Dicas Eventos LINQ LINQ To SQL Novidades Pensamentos Pessoal ruby Silverlight Sketchflow Team Foundation Server Testes Unitários Visual Studio .NET Visual Studio Team System WebCasts Windows Phone 7 WPF XAML
    • setembro 2010 (3)
    • agosto 2010 (8)
    • julho 2010 (4)
    • junho 2010 (11)
    • maio 2010 (9)
    • abril 2010 (7)
    • março 2010 (2)
    • fevereiro 2010 (7)
    • janeiro 2010 (7)
    • novembro 2009 (8)
    • outubro 2009 (11)
    • setembro 2009 (11)
    • Comunidade Read Only?!?!?!? (9)
    • C#–Operador ?? (9)
    • Causas da Insatisfação dos Funcionários: 15 erros fatais (7)
    • WPF é Difícil?! (7)
    • Integração C# + Ruby (5)
    • Biblioteca de IO para Silverlight 4 e COM+ (5)
    • Melhorando WinApps seguindo WebApps (5)
    • TFS 2008 com SQL Server 2008 (4)
    • Cobol + Team Foundation Server (4)
    • Biblioteca de Métodos de Extensão (4)
    • Gesilene Martins: Olá Márcio! Excelente post, com certeza existem muitas pessoas que não conhecem este re...
    • Rafael Amorim: Show! Sinceramente não conhecia este recurso! Continue com estas dicas que estão ajudando muito! :...
    • Felipe Pedroti Raymundo: Muito legal, uma maneira bem simples e elegante de mostrar os valores, não tendo que ficar caçando e...
    • Rafael Amorim: Show! Como sempre dicas úteis pra galera! []'s @faelAmorim
    • IronPyton, IronRuby, DLR e o que isso influencia na minha vida:??: « Felipe Pedroti Raymundo: [...] de algum tempo sem um conteúdo que me despertasse interesse, lendo um post antigo do blog do ...
    • Márcio Fábio Althmann: Opa o código vou liberar sim, só finalizar tudo que quero fazer, ai eu coloco no blog. E claro que t...
    • Djonatas Tenfen: Muito legal o esquema de particulas no Windows Phone, pode disponibilizar o código para a gente dar ...
    • Fabio Rodrigues: Agradecido pela explicação, estava a muito tempo querendo saber como trabalhar com este o...
  • Meu Twitter

    Carregando tweets...
    Siga-me no Twitter!
  • Siga-me

    Siga-me FacebookSiga-me TwitterSiga-me LinkedInSiga-me VimeoSiga-me RSS
  • Blogroll

    • André Nobre
    • Carlos dos Santos
    • Eduardo Spaki
    • Evilázaro Alves
    • Fernanda Sallai
    • Gesilene Martins
    • Israel Aece
    • Michel Banagouro
    • Ramon Durães
    • Ricardo Dorta
    • SQL From Hell
    • Thiago Zavaschi
  • Meta

    • Login
    • Posts RSS
    • RSS dos comentários
    • WordPress.org
Tema Mystique por digitalnature | Movido a WordPress
RSS Feeds XHTML 1.1 Topo