1 Requerimentos de sistema
O bug relacionado neste post foi detectado utilizando-se os softwares abaixo:
• Windows Vista Enterprise Edition SP1.
• Visual Studio Team System 2008 (2008 9.0.21022.8 RTM).
• .NET Framework 3.5.
• Compilador C# 3.5.21022.8
2 Demonstração
Veja abaixo um exemplo de utilização do atributo Obsolete:
Note que a propriedade Users foi marcada como obsoleta, onde os parâmetros abaixo foram definidos como:
• message = “Esta propriedade está obsoleta” (mensagem de erro ou alerta que é exibida durante a compilaçào quando a propriedade for utilizada).
• error = true (indica que a utilização da propriedade obsoleta deve implicar em um erro de compilação).
Conforme o esperado, quando compilamos o código abaixo, obtemos um erro na linha em destaque:
Entretanto, se implemetarmos a alteração em destaque abaixo, onde não utilizamos diretamente a propriedade obsoleta, mas sim um elemento da coleção, notaremos que nenhum erro é informado durante o processo de compilação:
3 Conclusão
Mantenha atenção redrobrada no emprego do atributo Obsolete na tentativa de minimizar a possibilidade de comportamentos inesperados pelo sistema.
A boa notícia é que a correção deste bug já foi providenciada pelo time da Microsoft e deve estar disponível na próxima versão da plataforma .NET.
4 Código-fonte
Você pode baixar o código-fonte desta ferramenta no endereço http://www.orchestratechnology.com.br/blog/csharp/ObsoleteCheck.zip.