Formatando valores com a interface IFormattable

Neste artigo veremos como gerar um classe e como utilizar a interface IFormattable para formatar um campo.

Depois de um tempo um tanto afastado, estou de volta com meus artigos em .Net. Para começar, vamos tratar de um assunto interessante presente em nossas aplicações: Formatação de Campos. Podemos afirmar que em praticamente todo aplicativo existe uma rotina para formatar um determinado campo, a citar: números, datas, telefones, cpf, cnpj, etc. No .NET Framework existe uma interface chamada IFormattable que possui um método chamado, ToString que é invocado automaticamente pelo runtime quando especificamos uma formatação.

Neste artigo veremos como gerar um classe e como utilizar a interface IFormattable para formatar um campo. Inicie o Visual Studio.Net e crie um Novo Web Site ( File -> New Web Site ). Logo após adicione um novo item do tipo Class ( Add New Item -> Class) e dê o nome de ClassesFormatacao. O Visual Studio.Net criará automaticamente um diretório chamado App_Code, onte estará armazenado o arquivo ClassesFormatacao.Vb .

Figura 1 – Diretório App_Code

Após ter criado o arquivo ClassesFormatacao, é hora de escrever as. Nesse exemplo, escreverei duas classes:

Veja na lista abaixo a implementação da Classes Telefone e CNPJ.

Listagem 1 – Classe CNPJ

            Public Class Cnpj

    Implements IFormattable

 

    Private _numero As String

 

    Public Sub New(ByVal numero As String)

        Me._numero = numero

    End Sub

 

    Public Overloads Function ToString(ByVal format As String, _

    ByVal formatProvider As IFormatProvider) As String _

        Implements IFormattable.ToString

 

        'Para pessoa jurídica - CNPJ

        If format = "PJ" Then

            Return Convert.ToDouble(Me._numero).ToString("000\.000\.000\/0000\-00")

            'Para pessoa física: CPF

        ElseIf format = "PF" Then

            Return Convert.ToDouble(Me._numero).ToString("000\.000\.000\-00")

        End If

        Return Me._numero

    End Function

 

    Public Overrides Function ToString() As String

        Return Me.ToString(Nothing, Nothing)

    End Function

End Class
        
Listagem 2 – Classe Telefone

            Public Class Telefone

    Implements IFormattable

 
    Private _numero As String


    Public Sub New(ByVal numero As String)

        Me._numero = numero

    End Sub

 
    Public Overloads Function ToString(ByVal format As String, _

    ByVal formatProvider As IFormatProvider) As String _

        Implements IFormattable.ToString
 

        If format = "TE" Then

            Return Convert.ToDouble(Me._numero).ToString("0000\-0000")



        End If



        Return Me._numero

    End Function
 

    Public Overrides Function ToString() As String

        Return Me.ToString(Nothing, Nothing)

    End Function

End Class

        

Na implementação das Classes CNPJ e Telefone, existe a implementação da interface IFormattable e, dentro do método sobrecarregado (Overloads) ToString, é retornado a formação. Baseando-se neste formato é que uma determinada formatação é aplicada ao objeto. Se nenhuma formatação é especificada, somente o objeto é retornado, sem nenhuma espécie de formatação.

Para testar as classes criadas, vamos ao arquivo Default.aspx e escreveremos os seguintes códigos no evento LOAD da página.

Listagem 3 – Formatando os objetos

            Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load


        Dim cpf As New Cnpj("00100200345")

        Dim telefone As New Telefone("36337500")


        Response.Write("Telefone Original: " & telefone.ToString & "<br />")

        Response.Write(String.Format("Telefone Formatado: {0:TE}. ", telefone) & "<br/>")


        Response.Write("CPF Original: " & cpf.ToString & "<br />")

        Response.Write(String.Format("CPF Formatado: {0:PF}", cpf))


    End Sub

        

Agora é hora de testar a aplicação, para isso execute a página e o seguinte resultado aparecerá no seu navegador.

Figura 2 – Testanto a Aplicação

Esse tipo de formatação é bastante flexível poderá ser usada em controle DataBound, como GridView (Figura 3) e o DropDownList (Figura 4)

Figura 3 – GridView
Figura 4 – DropDownList

Veja na Figura 5 baixo, o DropDownLista com valores formatados:

Figura 5 – DropDownList formatado

Artigos relacionados