Comment créer propre type dynamique ou dynamique de l'objet en C#?
Il y a, par exemple, ViewBag propriété de ControllerBase
classe et on peut dynamiquement obtenir/définir les valeurs et ajouter n'importe quel nombre d'autres champs ou propriétés de cet objet, ce qui est cool .Je veux utiliser quelque chose comme ça, au-delà de l'application MVC et Controller
classe dans d'autres types d'applications. Quand j'ai essayé de créer dynamique de l'objet et de l'ensemble de la propriété, comme ci-dessous:
1. dynamic MyDynamic = new { A="a" };
2. MyDynamic.A = "asd";
3. Console.WriteLine(MyDynamic.A);
J'ai RuntimeBinderException
avec message Propriété ou d'indexation " <>f__AnonymousType0.Un " ne peut pas être attribué à -- il est en lecture seule de la ligne 2. Aussi je suggère qu'Elle n'est pas tout à fait ce que je suis à la recherche pour. Peut-être est-il une classe qui peut me permettre de faire quelque chose comme:
??? MyDynamic = new ???();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = DateTime.Now;
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
avec dynamique de l'ajout et de la définition des propriétés.
Vous devez vous connecter pour publier un commentaire.
Lire plus sur ExpandoObject classe et pour plus d'échantillons: Représente un objet dont les membres peuvent être dynamiquement ajoutés et supprimés au moment de l'exécution.
ExpandoObject
est ce que vous cherchez.J'ai récemment eu besoin de prendre un peu plus loin, qui était de faire de la propriété ajouts dans la dynamique de l'objet, dynamique, eux-mêmes, basé sur les entrées définies par l'utilisateur. Les exemples ici, et à partir de Microsoft ExpandoObject documentation, ne traitent pas spécifiquement de l'ajout de propriétés de manière dynamique, mais, peut être évaluée à partir de la façon dont vous énumérer et supprimer des propriétés. De toute façon, j'ai pensé que cela pourrait être utile à quelqu'un. Ici est une version extrêmement simplifiée de la façon d'ajouter vraiment des propriétés dynamiques d'un ExpandoObject (en ignorant mot-clé et la manipulation):
Vous pouvez utiliser
ExpandoObject Class
qui est enSystem.Dynamic
espace de noms.Plus d'informations peuvent être trouvées à l'
ExpandoObject MSDN
Ou la valeur est présente