Press "Enter" to skip to content

Utilizando o atributo ObsoleteAttribute

As vezes quando utilizamos alguns objetos ou métodos do .Net, o Intellisense mostra o método riscado, e nos avisa que o mesmo está obsoleto, e devemos utilizar outra classe ou método no lugar, e podemos utilizar esse recurso nos nossos códigos!

Trabalho criando ferramentas e frameworks pra outros desenvolvedores, e nem sempre quando disponibilizamos alguma API para utilização, podemos sair removendo métodos por exemplo, não sabemos quem utilizou, e se em alguma possível atualização o software vai parar de funcionar ou não, e o atributo Obsolete pode nos ajudar nesse cenário, informando o que está obsoleto na API e será descartado em breve, ou simplesmente recomendando uma alternativa melhor!

A utilização do atributo é simples, vou pegar o código do BasicIoC e criar um método obsoleto de propósito, só preciso informar a mensagem que será mostrada para quem for utilizar o método.

[Obsolete("This method is obsolete; use method Register instead.")]
public Container Map<T>()
{
    _baseType = typeof (T);
    return this;
}

E o interessante é que o Intellisense já ajuda o desenvolvedor mostrando que o método é obsoleto.

Isso não impede a utilização do método, mas mostra avisos quando compilamos que utilizamos um método obsoleto.

Mas podemos adicionar um segundo parâmetra booleano quando configuramos o atributo, forçando um erro de compilação caso existe algum código utilizando um método ou classe obsoleta.

[Obsolete("This method is obsolete; use method Register instead.", true)]
public Container Map<T>()
{
    _baseType = typeof (T);
    return this;
}

Agora o código não compila mais, no lugar de um aviso um erro de compilação é mostrado, mostrando que estamos utilizando um método obsoleto.

Por hoje é isso.

Até o próximo post.