Je voudrais vraiment essayer le nouveau contrat de code dans Visual Studio 2010, mais je ne veux pas installer d'extensions supplémentaires à Visual Studio (depuis mon code en partage avec mes collègues). Maintenant, en ciblant .NET 4.0, je peux utiliser le nouvel espace de noms System.Diagnostics.Contracts, mais je ne l'ai pas encore fait.Contrats de code prêts à l'emploi dans .NET 4.0
Par exemple, en utilisant
static void Main(string[] args)
{
Greet(null);
Console.ReadLine();
}
private static void Greet(string name)
{
Contract.Requires(name != null);
Console.Out.WriteLine("Hello {0}", name);
}
Le programme est compilé et exécuté (affichage « Bonjour ») sans aucun avertissement. Si j'essaie d'utiliser Contract.Requires<ArgumentNullException>(name != null)
, je reçois un message me disant que je dois utiliser la réécriture, quelle que soit la valeur du nom. Google me dit, que je peux obtenir n'importe quel type de magie quand j'installe la prime de contrats de code, mais quel est le but de cet espace de noms quand je ne le fais pas? Puis-je utiliser des contrats de code pour autre chose que des commentaires élaborés prêts à l'emploi?
Définition CONTRACTS_FULL fera même la version non générique require exiger la rewriter, mais Bien sûr, j'ai oublié de déployer le code * toux *. Merci! – Jens
@Jens: Qu'entendez-vous par "exiger le réécriteur"? Je m'attendais à une exception ... –
Je reçois un échec d'assertion avec le message "Doit utiliser le réécriteur lors de l'utilisation de Contract.Requires". – Jens