ExpandoObject
concerne le DLR, et est principalement lié pour jouer entre C# et un langage dynamique (peut-être IronPython); cependant, plus généralement, ce type d'objet propriété-sac peut être utile lorsque le schéma de vos types est seulement connu au moment de l'exécution, peut-être basé sur des données de base de données/configuration. Peut-être un exemple de l'anti-modèle de "plate-forme interne", mais il est utile dans des scénarios spécifiques pour attacher des propriétés à l'exécution. Bien sûr, pour une utilisation purement CLR (ie pas d'appels DLR), vous pouvez faire beaucoup plus simplement juste avec un indexeur dictionnaire:
obj["Name"] = "Fred";
string name = (string) obj["Name"];
Pour des fins de liaison de données, même avec cela, vous pouvez obtenir des données complètes de liaison en utilisant des descripteurs de propriétés personnalisés, via ICustomTypeDescriptor
ou TypeDescriptionProvider
.
Ou pour un exemple simple: envisager DataTable
... c'est en partie ce que vous pouvez faire ici (encore une fois, dans le code statique typé): (exemple non testé)
DataTable table = new DataTable();
table.Columns.Add("Name", typeof(string));
DataRow row = table.Rows.Add("Fred");
en double possible de [ Quels sont les vrais avantages d'ExpandoObject?] (Http://stackoverflow.com/questions/1653046/what-are-the-true-benefits-of-expandoobject) – nawfal