Ter 4 Nov 2008
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:
public class User
{
private System.Collections.Generic.Dictionary<int, string> users;
[System.Obsolete(”Esta propriedade está obsoleta.”, true)]
public System.Collections.Generic.Dictionary<int, string> Users
{
get
{
return this.users;
}
}
public User()
{
this.users=new System.Collections.Generic.Dictionary<int,string>();
this.users.Add(0, “Evandro de Paula”);
}
}
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:
class Program
{
static void Main(string[] args)
{
User user = new User();
System.Collections.Generic.Dictionary users=user.Users;
System.Console.ReadLine();
}
}
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:
class Program
{
static void Main(string[] args)
{
User user = new User();
System.Console.WriteLine("Name: " + user.Users[0]);
System.Console.ReadLine();
}
}
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.
Enviar por e-mail. Hits para esta publicação: 313.
Dezembro 2nd, 2008 at 11:49
Fala Evandro, ótimo post. Dei uma passada por aqui só pra dar um “Alow”
To de blog novo, www.devexperts.com.br
Dá uma passada lah!
Abraços!!!
Dezembro 8th, 2008 at 14:29
Seu blog está sensacional, cheio de novidades. Vou referenciá-lo aqui.