mai
2007
Comme le dit le nom « initializer », il n’est possible d’utiliser un object initializer que sur l’initailisation de l’objet (ie : à son instanciation). Cela est une restriction car de ce fait, si on passe par une factory, on ne peut pas l’utiliser. Prenons un exemple concret. On ajoute un DataSet à un projet. Dans ce DataSet, on met une table « MyTable » avec plusieurs colonnes dont une, « IntCol » de type int qui autorise les DBNull. Puis […]
mai
2007
Ludovic m’a montré quelque chose de très intéressant aujourd’hui. On avait une base SQL Server dans laquelle on avait une table dont la clé était de type compteur (int autoincrémental). Par code on devait rajouter une ligne dans cette table et récupérer la clé associée. Vu que la clé est gérée par SQL Server, je pensais passer par une procédure stockée. Ludovic a trouvé qu’il était possible de passer par un TableAdapter en lui passant […]
mai
2007
Le code suivant fonctionne sans problème : class Test { static void Toto(string s1) { } class SubTest { static void Tutu() { Toto("un"); } } } En revanche le code suivant class Test { static void Toto(string s1) { } class SubTest { static void Tutu() { […]
mai
2007
Prenons le code suivant : public static class StringExtension { public static string Format(this string template, params object[] parameters) { return string.Format(template, parameters); } } string s = StringExtension.Format("{0}", "toto"); ne pose pas de problème. En revanche, string s = "{0}".Format("toto"); génère une erreur à la compilation : « Member ‘string.Format(string, params object[])’ cannot be accessed with an instance reference; qualify it with a type name instead » Il faut caster […]
mai
2007
Imaginez le cas suivant : vous avez une classe C1, un RealProxy<C1> et une interface graphique sur laquelle vous avez des contrôles bindés avec les propriétés de C1 via le RealProxy. Ce RealProxy est définit de tel sorte que si une exception se produit lors du set d’une propriété de C1, il remonte un évènement. Ainsi, en cas de binding, même si l’utilisateur a rentré une valeur qui génère une exception, il ne sera pas […]
mai
2007
Thomas Lebrun vient de me faire découvrir via son blog un site qui au premier regard a l’air très intéressant si, comme moi, vous développez des applications Windows : http://windowsclient.net/
mai
2007
Keyvan Nayyeri vient de poster un article expliquant comment ajouter des commandes à un Control perso WPF.
mai
2007
Pour rappel, les Collections Initializer permettent de remplir une liste dans la même instruction que son initialisation : List<string> brothers = new List<string> { "Matthieu", "Vincent", "Perrine", "Sylvain", "Rémi" }; cela équivaut à : List<string> brothers = new List<string>(); brothers.Add("Matthieu"); brothers.Add("Vincent"); brothers.Add("Perrine"); brothers.Add("Sylvain"); brothers.Add("Rémi"); Je me suis posé la question suivante : que fait-il pour utiliser les collection initializer sur un object ? Il faut que la classe de l’objet implémente IEnumerable et il faut […]
mai
2007
Le mot clé var ne peut être utilisé que dans le corps d’une méthode (ou propriété) impossible donc d’écrire ceci : private var _persons = new List<Person>(); pour l’instant du moins.
mai
2007
Je viens d’être assez surpris par la dll WindowsBase (pour rappel c’est une dll WPF fournit à partir du Framework 3.0). En effet, j’ai trouvé dans cette dll une classe ObservableCollection<T> ou encore ReadOnlyObservableCollection<T> qui sont certes bien utiles. J’ai moi-même déjà développé des classes équivalentes mais je suis surpris de les retrouver dans cette dll. Je comprend un peu mieux que la nouvelle interface INotifyCollectionChanged s’y trouve, même si l’aurais plutôt vu avec sa […]