mars
2007
J’avais déjà vu différentes façon d’implémenter de façon « thread safety » le design pattern singleton (je vous conseille d’ailleurs ce site), mais je n’avais encore jamais vu celle utilisée dans la classe SR du Framework : private static object InternalSyncObject { get { if (s_InternalSyncObject == null) { object obj2 = new object(); Interlocked.CompareExchange(ref s_InternalSyncObject, obj2, null); } […]
mars
2007
Comme nous l’apprend Chris Lyon, une surcharge de la méthode Collect de la classe GC fait son apparition avec la CTP de Mars.
mars
2007
Je souhaitais obtenir la longueur maximale validée par un pattern de Regex. N’ayant pas trouvé, je l’ai codé moi-même. C’est comme ça que j’ai trouvé l’erreur dans Reflector dont je parlais hier. Mon projet ne permet pas de prendre en compte tous les Regex possible mais j’ai traité ceux dont j’avais besoin sur mon projet professionnel du moment. Au final, j’ai fait un projet test que je trouve bien sympa et qui mélange des notions […]
mars
2007
Vous trouverez ici un très bon article sur les extension methods en VB 9 avec notemment dans la partie Best practice une excellente idée : Utiliser les namespaces des class qu’on veut étendre.
mars
2007
Grâce à C# 3.0, le code suivant : public partial class Form1 : Form { public Form1() { InitializeComponent(); List<Personne> list = new List<Personne>(); list.Add(new Personne("Z", "A")); list.Add(new Personne("A", "Z")); list.Add(new Personne("A", "A")); bindingSource1.DataSource = list; } } public class Personne { private string _nom; private string _prenom; public Personne(string nom, string prenom) […]
mars
2007
Depuis la CTP de Mars de Orcas, la dll System.Core est directement inclue dans les modèles de projet. C’est une excellente chose. Pour rappel, vous avez besoin de cette dll pour utiliser les extension methods.
mars
2007
En l’espace de deux semaines, j’ai eu deux mésaventures avec Reflector : la première, une exception quand je voulais voir le code d’une propriété pourtant relativement simple. (Je n’ai pas réussi à le reproduire dans un autre exemple) => message automatique envoyé à Denis Bauer. la deuxième, aujourd’hui même. Je récupère l’integralité du namespace RegularExpression et là surprise, la classe Regex ne fonctionne pas correctement. Ca m’a obligé à bien me plonger dedans pour comprendre […]
mars
2007
Si le sujet debugger vous intéresse, je vous conseille toujours d’aller visionner les webcasts de Mitch que j’avais référencé à la fin de mon article sur le databinding avancé, cependant ce n’est pas de ça que je veux parler aujourd’hui. J’avais décompilé le code de la classe TextBox avec Reflector et FileDisassembler. (Vous trouverez sur ce site plusieurs addins Reflector.) J’ai une classe MyTextBox qui hérite de TextBox. L’exécution était arrêté sur un point d’arrêt […]
mars
2007
Quand on veut changer restreindre le type de retour dans la surcharge d’une métode (ou propriété (readonly)) ou dans le cas d’une implémentation d’une interface, ce n’est pas possible. C’est bien dommage mais c’est comme ça ! Prenons un exemple : interface I1 { List<I2> Test { get; } } interface I2 { } class C1 : I1 { private List<C2> _test; public List<C2> Test { […]
mars
2007
Avec Visual Studio 2003 (ou 2002), quand on créait une propriété, il fallait déclarer le champ puis la propriété. Avec Visual Studio 2005, les snippets et le refactoring nous permmettait de gagner du temps mais le code était toujours aussi long. En C# 3.0, on a la possibilité de réduire considérablement le code avec cette nouveauté. Il suffit de déclarer la propriété comme on le fait dans une interface et le compilateur génère le code […]