Je voudrais ajouter dynamiquement des propriétés à un ExpandoObject au moment de l'exécution. Ainsi, par exemple, pour ajouter une propriété de chaîne, appelez NewProp, je voudrais écrire quelque chose comme
var x = new ExpandoObject();
x.AddProperty("NewProp", System.String);
Est-ce que c'est facilement possible?
c#
c#-4.0
dynamic
expandoobject
Craig
la source
la source
Réponses:
Alternativement:
la source
Error 53 Cannot convert type 'System.Dynamic.ExpandoObject' to 'System.Collections.Generic.IDictionary<string,string>' via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion, or null type conversion
IDictionary<string, object>
pas le casIDictionary<string, string>
.IDictionary
vous ne l'utilisez pasdynamic
comme type de variable.Comme expliqué ici par Filip - http://www.filipekberg.se/2011/10/02/adding-properties-and-methods-to-an-expandoobject-dynamicly/
Vous pouvez également ajouter une méthode lors de l'exécution.
la source
Voici un exemple de classe d'assistance qui convertit un objet et renvoie un Expando avec toutes les propriétés publiques de l'objet donné.
Usage:
la source
Je pense que cela ajoute une nouvelle propriété dans le type souhaité sans avoir à définir une valeur primitive, comme lorsque la propriété est définie dans la définition de classe
la source