|
<< Click to Display Table of Contents >> Extension Methods |
![]() ![]()
|
Os métodos de extensão surgiram junto com o .Net Framework 3.5, e permitem adicionarmos novas funcionalidades a tipos existentes, sem a necessidade de alterar o tipo original e recompilá-lo. Devem sempre ser métodos estáticos, mas a chamada para eles é muito parecida com a chamada para métodos de instância. O primeiro parâmetro especifica em qual o tipo que método opera e deve sempre ser seguido da palavra chave this.
A classe que conterá o método de extensão, assim como o próprio método, também deve ser estática e a Namespace deve ser declarada nos locais onde o método de extensão deverá ficar disponível, através de using.
Exemplo básico
Crie a classe de extensão
// extension methods
public static class Util
{
public static string duplo(this string value)
{
return value + value;
}
}
Agora pode usar
Console.WriteLine("Valor da string ".duplo());
Exemplo 2
public static class MetodosDeExtensao
{
/// <summary>
/// Verifica se um objeto é nulo
/// </summary>
/// <param name="obj">object, objeto a ser verificado</param>
/// <returns>bool, true quando o objeto for nulo</returns>
public static bool IsNull(this object obj)
{
if (obj == null)
return true;
else
return false;
}
}
// usando:
// utilizando a maneira convencional
string strNome = "Fernando Ottoboni";
if (MetodosDeExtensao.IsNull(strNome))
Console.WriteLine("Nome não informado.");
Mais exemplos: Verificar se um string é um DateTime válido
/// <summary>
/// Verificar se o conteúdo da string equivale a um DateTime
/// </summary>
public static bool IsDateTime(this string str)
{
string strData = str;
if (string.IsNullOrEmpty(strData))
return false;
try
{
DateTime datData = Convert.ToDateTime(strData);
return true;
}
catch
{
return false;
}
}
Verificar se um string é um Decimal válido
/// <summary>
/// Verificar se o conteúdo da string equivale a um decimal.
/// </summary>
public static bool IsDecimal(this string str)
{
if (String.IsNullOrEmpty(str))
return false;
try
{
Convert.ToDecimal(str);
return true;
}
catch
{
return false;
}
}
Retorna a string reversa
/// <summary>
/// Retorna a string de forma reversa
/// </summary>
/// <param name="str">String a ser revertida</param>
/// <returns>String revertida</returns>
public static string ReverseString(this string str)
{
char[] arr = str.ToCharArray();
Array.Reverse(arr);
return new string(arr);
}
Extrai um Substring do lado esquerdo da string conforme a quantidade de caracteres desejada
/// <summary>
/// Extrai um Substring do lado esquerdo da string
/// conforme a quantidade de caracteres desejada
/// </summary>
/// <param name="str">String para extrair o substring</param>
/// <param name="length">Quantidade de caracteres a extrair</param>
/// <returns>String</returns>
public static string Left(this string str, int length)
{
if (str.IsNullOrEmpty())
return str;
if (str.Length <= length)
return str;
return str.Substring(0, length);
}
Extrai um Substring do lado direito da string conforme a quantidade de caracteres desejada
/// <summary>
/// Extrai um Substring do lado direito da string conforme a quantidade de caracteres desejada
/// </summary>
/// <param name="str">String para extrair o substring</param>
/// <param name="length">Quantidade de caracteres a extrair</param>
/// <returns>String</returns>
public static string Right(this string str, int length)
{
if (str.IsNullOrEmpty())
return str;
if (str.Length <= length)
return str;
return str.ReverseString().Substring(0, length).ReverseString();
}