Wilfried Woivré & .Net

Visual Studio 2010 : Intégration de F#

NOVE27

Alors je suppose que vous êtes au courant, Visual Studio 2010 supporte en natif depuis ces premières versions le langage F#.

Basé sur le langage Caml, il intègre toutes les supers fonctionnalités de la plateforme .Net. Enfin bref, aucune démonstration ici, mais je voulais vous montrer un élément à Visual Studio bien utile quand vous voulez jouer un peu avec le F#.

Je suppose donc que comme moi, lorsque vous avez commencé le C#, vous deviez regretter de devoir à chaque fois compiler, lancer votre jolie application console, et attendre le résultat, qui généralement n’était pas le bon ! (Souvenirs, souvenirs …) Vous auriez je pense avoir une joli fenêtre interactive afin de construire votre application pas à pas, mais tout en vérifiant rapidement vos données.

Alors F# et Visual Studio apporte cela, en effet dans les nouvelles fenêtres de notre outil de développement, on peut voir apparaître “F# Interactive” :

image

Cette fenêtre a toujours été en fait mon rêve, pouvoir rapidement coder et tester en même temps sans à avoir à créer un projet console appelé “ConsoleApplication142”

Alors comment ça marche maintenant, dans votre fenêtre vous pouvez écrire tout code F# que vous voulez tester, par exemple :

image

On voit donc ici, la création d’une méthode square qui prend une valeur en paramètre, et qui retourne le carré de celle-ci, puis un appel afin de tester.

Mais très important, on peut voir aussi que la fenêtre F# Interactive retient bien la méthode square en mémoire, pour d’éventuel appel, et donc on peut vraiment tester, ou apprendre le F# au pas à pas.

Voilà, j’essayerai de vous publier divers articles sur la technologies F#, qui m’a l’air très intéressante, et qui je pense peut avoir un bel avenir dans la recherche, calcul algorithmique, et bien entendu les mathématiques.

Remonter

C# 4.0 : Le mot clef dynamic et la Reflexion

NOVE4

Comme vous avez du en entendre parler une des grandes nouveautés de la version 4 du framework est le mot clef dynamic. Celui-ci permet de simplifier l’utilisation de la réflexion dans les applis .Net.

On va voir dans cet article les différentes façon d’utiliser la réflexion entre la 2.0 et la 4.0. Pour l’exécution de ces diverses méthodes, nous allons utiliser la réflexion sur une DLL, réalisé en F#, dont le contenu fortement complexe est le suivant :

 

module Module1

type Multiplication(val1, val2) =
    let result = val1 * val2
    member obj.Result = result

 

Commençons donc par le tout début, c’est à dire avec un bon vieux InvokeMember, comme on peut le voir ci-dessous :

Type Module = Assembly.LoadFrom("CalcLibrary.dll").GetType("Module1");
Type Multiplication = Module.GetNestedType("Multiplication");
object multiplication = Activator.CreateInstance(Multiplication, new object[2] { val1, val2 });
PropertyInfo propertyResult = multiplication.GetType().GetProperty("Result");
txbResult.Text = propertyResult.GetValue(multiplication, null).ToString();

On obtient donc dans notre jolie interface le bon résultat comme on peut le voir aussi, et heureusement j’ai envie de dire :

 image

Bon malgré le fait que cette réflexion ne soit pas trop poussé, on se rappelle tout de suite que c’est toujours très verbeux. Heureusement, le mot clef dynamic arrive.

 

On voit donc qu’on charge toujours notre DLL, que l’on crée une instance, non pas cette fois dans une variable de type object, mais de type dynamic, grâce à laquelle on a directement accès à la propriété Result.

 

Type Module = Assembly.LoadFrom("CalcLibrary.dll").GetType("Module1");
Type Multiplication = Module.GetNestedType("Multiplication");
dynamic multiplication = Activator.CreateInstance(Multiplication, new object[2] { val1, val2 });
txbResult.Text = multiplication.Result.ToString();

Et notre fenêtre donne toujours le bon résultat :

image

Bien entendu, le mot clef dynamic est à utiliser à bon escient, mais je suppose que je n’ai pas besoin de vous le rappeler ! Donc surtout dans les phases de réflexion, et l’interopérabilité avec le monde COM

Donc pas de solution cette fois-ci encore, tout le code est là ! Je tâcherais de vous faire une petite présentation de F# bientôt (si j’ai un peu de temps …)

Remonter