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 .
Após ter criado o arquivo ClassesFormatacao, é hora de escrever as. Nesse exemplo, escreverei duas classes:
- Telefone;
- CNPJ.
Veja na lista abaixo a implementação da Classes Telefone e 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
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.
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.
Esse tipo de formatação é bastante flexível poderá ser usada em controle DataBound, como GridView (Figura 3) e o DropDownList (Figura 4)
Veja na Figura 5 baixo, o DropDownLista com valores formatados:
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo