web-dev-qa-db-fra.com

Créer un type anonyme de manière dynamique?

Je veux créer un type anonyme que je peux définir dynamiquement le nom de la propriété. il n'est pas nécessaire que ce soit un type anonyme. Tout ce que je veux réaliser, c'est définir dynamiquement les noms des propriétés des objets. Cela peut être ExpandoObject, mais le dictionnaire ne fonctionnera pas pour moi.

Quelles sont vos suggestions?

52
ward87

Seul ExpandoObject peut avoir des propriétés dynamiques.

Edit : Voici un exemple d'utilisation de Expand Object (à partir de sa description MSDN):

dynamic sampleObject = new ExpandoObject();
sampleObject.TestProperty = "Dynamic Property"; // Setting dynamic property.
Console.WriteLine(sampleObject.TestProperty );
Console.WriteLine(sampleObject.TestProperty .GetType());
// This code example produces the following output:
// Dynamic Property
// System.String

dynamic test = new ExpandoObject();
((IDictionary<string, object>)test).Add("DynamicProperty", 5);
Console.WriteLine(test.DynamicProperty);
54
Andrew Bezzub

Vous pouvez convertir ExpandoObject dans un dictionnaire et le remplir de cette façon, puis les clés que vous définissez apparaîtront comme noms de propriété sur le ExpandoObject ...

dynamic data = new ExpandoObject();

IDictionary<string, object> dictionary = (IDictionary<string, object>)data;
dictionary.Add("FirstName", "Bob");
dictionary.Add("LastName", "Smith");

Console.WriteLine(data.FirstName + " " + data.LastName);
33
stevemegson