Sommaire

Les objets "dynamics" dynamics

Au travers des sections précédentes, nous avons écrit de jolies classes avec de jolis noms dans de jolis fichiers .cs. Pour une rédaction de type "script" à la mode Python, il existe une autre façon de faire : les dynamics.

Tout commence par le mot-clé dynamic qui informe le compilateur que ce qui va suivre n’a rien de static. D’ailleurs, l’exécution du code sous-jacent s’effectuera dans la DLR (Dynamic Language Runtime), qui est une surcouche rajoutant à notre CLR des fonctionnalités dynamiques.

Le code se poursuit par l’instanciation d’un objet implémentant l’interface System.Dynamic.IDynamicMetaObjectProvider, comme par exemple l’objet prêt à l’emploi ExpandoObject.

Le code suivant autocommenté présente un exemple d’utilisation. La déclaration des propriétés et de leurs valeurs est très simple. Par contre, l’ajout d’une méthode passe par une syntaxe un peu particulière appelée "expression lambda" que nous présenterons dans le chapitre Communication entre objets.

// Instanciation d’un objet dynamic  
dynamic MyDynamic = new System.Dynamic.ExpandoObject();  
// Déclaration de propriétés  
MyDynamic.Bonjour = "Hello World";  
MyDynamic.Tva = 20.3;  
// Déclaration d’une méthode  
MyDynamic.Ajouter ...