Já ocorreu de precisarmos criar uma classe conteúdo algumas funcionalidades básicas mais usadas e algumas dessas deixaram de ser úteis ou sofreram algum tipo de evolução. OK, mais e as aplicações que utiliza essa nossa classe, como identificar?
Em .NET existe o atributo Obsolete, que pode marcar em nossa classe se ele é um código obsoleto e até mesmo impedir que ele seja compilado.
Segue abaixo como utiliza-lo
[Obsolete("Utilize o método PesquisarCliente()")]
public DataSet ListarClientes()
{
// Aqui vai o codigo antigo
return new DataSet();
}
public DataSet PesquisarClientes()
{
// Aqui vai o codigo novo
return new DataSet();
}
No caso acima, se utilizarmos o método ListarClientes() seremos avisado de que o método é obsoleto e que poderemos utilizar o método PesquisarClientes() como alternativa.
Mais e se caso eu queira forçar a substituição do método pelo programador? Segue abaixo.
[Obsolete("Utilize o método PesquisarCliente()", true)]
public DataSet ListarClientes()
{
// Aqui vai o codigo antigo
return new DataSet();
}
public DataSet PesquisarClientes()
{
// Aqui vai o codigo novo
return new DataSet();
}
Se observar bem, verá que foi informado um novo parâmetro no atributo Obsolete. Informamos true para que seja exibido erro quando for utilizado o nosso método antigo ou até mesmo onde já esteja utilizando.
Esse atributo é ideal para nossas métodos que não sofreram evolução e necessitam ser substituidas.
Fica ai a dica.
Abraço e sucesso!
Postado em C#, Dicas, Visual Studio | Marcado como .NET, C#, Dicas, Framework, Obsolete, Visual Studio
Olá boa tarde.
Não é um tanto radical forçar o cara a substituis, assim e se eu já tenho um código compilado ele dixa de funcionar? Caso a reposta seja falsa, desconsiderem o minha opinião de radical.
Sim, é um pouco radical dependendo do ponto de vista. Mais no exemplo que você deu de uma aplicação já estar compilada ira gerar erro. Mais a dica é boa em casos que precisamos substituir um método antigo e obsoleto por um novo que seja mais eficaz por exemplo.
Opa,
a tecnica de se usar Código Obsoleto (sem o disparamento de erro na compilação) é muito usada pela propria Microsoft.
Exemplo:
Na versão 1.0 de alguma classe em o método TESTE();
Na versão 2.0 esse método foi trocado pelo TESTE2(), mas, o TESTE() ainda funciona e está como Obsoleto e indicando para usar o Novo.
Na versão 3.0 já não existe o método TESTE().
Adotei a algum tempo essa técnica e estou tendo bons resultados com meus componentes.
Parabens!