[.NET] Linq et type dynamique, attention au piège en .NET
Problème
Le code suivant affiche « Numbers greater than 3 are : 6 7 » au lieu du « Numbers greater than 3 are : 4 5 6 7 » attendu.
Savez-vous pourquoi ?
class Program
{
static void Main(string[] args)
{
List<Int32> allNumbers = new List<Int32>() { 1, 2, 3, 4, 5, 6, 7 };
List<dynamic> greaterNumbers = new List<dynamic>();
// Finding all numbers from the "allNumbers" list that are greater
// than "currentNumber"
for (Int32 currentNumber = 0; currentNumber < 5; currentNumber++)
{
dynamic item = new ExpandoObject();
item.Number = currentNumber;
item.GreaterNumbers = allNumbers.Where(e => e > currentNumber);
greaterNumbers.Add(item);
}
// Here greaterNumbers contains 5 items
// We want to display numbers greater than 3
dynamic greaterThan3 = greaterNumbers
.FirstOrDefault(i => i.Number == 3);
if (greaterThan3 != null)
{
Console.Write("Numbers greater than 3 are : ");
foreach (Int32 greaterNumber in greaterThan3.GreaterNumbers)
{
Console.Write(greaterNumber);
Console.Write(' ');
}
Console.WriteLine();
}
}
}Explication
Where, est une méthode d’extension proposée par LINQ. Cette méthode s’exécute en différé, c’est-à-dire que le Where ne sera exécuté que lorsqu’on voudra accéder à son résultat. Cette exécution différée est causée par la présence du mot clé « yield » dans l’implémentation de la méthode Where.
continuer la lectureWinDBG : charger les bonnes extensions
Pour débugguer vos applications .NET, Microsoft propose un outil nommé WinDBG disponible dans le “Windows SDK”.
WinDBG étant un debugueur natif, il a besoin d’extensions pour fonctionner avec les applications .NET. Ces extensions sont différentes en fonction de la technologie et de la version de .NET que votre application utilise (Silverlight / WPF / .NET 2.0 / .NET 4, etc.).
SOS
SOS.dll (Son Of Strike) est une DLL fournie lors de l’installation du framework .NET qui se trouve dans le répertoire : C:\Windows\Microsoft.NET\Framework\
continuer la lectureXAML Spy, l'outil indispensable pour les développeurs XAML
Sorti en version finale au mois de juin 2012, XAML Spy, le successeur de Silverlight Spy, est un outil facilitant grandement la vie des développeurs XAML (Silverlight, Windows Phone et WinRT).
Si vous développez en HTML/CSS, vous connaissez surement les “developers tools” d’Internet Explorer 9, Chrome, etc. qui permettent notamment de séléctionner directement un élément dans la page, de retrouver toutes les propriétés CSS appliquées et de les modifier à la volée pour voir le résultat directement dans le navigateur.
continuer la lectureUtiliser le débugger de Visual Studio côté client dans des classes partielles créées sur un proxy WCF
Dans le cadre d’une application utilisant un service WCF, il n’est pas rare de créer des classes partielles (partial class) côté client pour rajouter des propriétés aux objets envoyés par le service. Ces propriétés sont liées à l’application cliente (pour l’interface par exemple) et n’ont aucune raison d’être présentes côté service.
Par exemple une classe Produit avec les propriétés Prix, Nom, Stock définies côté service peut avoir une propriété IsVisible côté client permettant d’afficher ou non le produit sur l’interface graphique. Des méthodes peuvent également être créées dans ces classes partielles.
continuer la lectureGeek comics : 1re application Windows Phone
Ca y est, ma 1re “vraie” application Windows Phone vient d’être publiée sur le Marketplace. Cette application a pour but de récupérer et d’afficher les BD Geek and Poke et xkcd.
Cette 1re version reste assez basique mais était pour moi un bon moyen d’approfondir mes connaissances dans ce domaine.
Si vous trouvez un bug ou avez des suggestions pour les prochaines versions, n’hésitez pas à me contacter.
Mettre un point d'arrêt dans une DLL sur Visual Studio 2010
N’ayant pas accès au code des DLL du framework .NET, il peut être intéressant de mettre un point d’arrêt à l’intérieur de ces DLL afin de savoir quand les methodes contenues dans la DLL sont appelées.
L’objectif de cet article est de “breaker” lorsque l’on appelle la propriété Count et la méthode Clear() d’une liste (List<T>).
- Première étape, désactiver l’option “Enable Just My Code (managed only)” dans les options de debug. Pour y arriver, rendez-vous dans Debug -> Options and Settings -> Enable Just my Code (managed only), puis décochez la case.
- Deuxième étape, afficher la fenêtre “Breakpoints” dans Visual Studio 2010 : raccourci Ctrl+D+B.
Apportez votre touche à Silverlight France
Il y a quelques semaines nous avons lancé le site Silverlight France afin de rassembler des articles traitant de Silverlight, Windows Phone 7 et WinRT.
2 modes de partage sont disponibles :
- Ecrire des articles sur votre blog et simplement nous autoriser à les référencer. Dans ce cas un lien vers votre article ainsi qu’une courte description seront postés sur Silverlight France.
- Autre solution, si vous n’avez pas de blog, héberger directement vos articles sur Silverlight France.
Pour participer rendez-vous sur la partie contact du site ou directement par commentaire sur ce blog.
Programme du lancement de la communauté Silverlight francophone
Le programme est désormais connu pour la journée du 26 octobre 2011 dans les locaux de Microsoft France :
- Présentation de la communauté
- Nouveautés SL5 et 3D par David Catuhe, Cyril Cathala et Nathanael Marchand
- RX Framework par Christophe Argento, Aymeric Lagier
- Communication en Silverlight par John Thiriet et Matthieu Mezil
- Retour d’expérience en MVVM par Stéphanie Hertrich
On vous attend :-).
Renouvellement titre Microsoft Student Partner + expertise Silverlight
L’annonce est tombée aujourd’hui, mon titre de Microsoft Student Partner est renouvelé pour l’année 2011/2012. Depuis cette année, certains MSP sont nommés “expert” dans une technologie. Pour ma part je suis nommé MSP “expert” Silverlight.
Au programme de l’année :
- Articles
- Conférences
- Communauté Silverlight France
- et plein d’autres choses :-)
Pour avoir la liste complète des MSP, suivez ce lien.
Lancement de la communauté Silverlight francophone
Avec Cyril Cathala, Nathanaël Marchand et Christophe Argento, nous avons décidé de lancer une communauté Silverlight francophone (groupe facebook et Twitter) qui regroupera des ressources sur Silverlight pour les débutants ainsi que les experts.
Afin de lancer ce projet, nous vous invitons le 26 octobre 2011, de 14h30 à 18h30 dans les locaux de Microsoft France à Issy les Moulineaux pur participer à une présentation du projet et suivre des sessions techniques.
Inscrivez-vous vite à l’après midi de lancement du projet en suivant ce lien.
continuer la lecture