197 votes

Les différences entre ExpandoObject, DynamicObject et dynamique

Quelles sont les différences entre System.Dynamic.ExpandoObject, System.Dynamic.DynamicObject et dynamic?

Dans quelles situations avez-vous l'utilisation de ces types?

169voto

SLaks Points 391154

L' dynamic mot-clé est utilisé pour déclarer des variables qui devraient être tardive.
Si vous souhaitez utiliser la liaison tardive, pour tout réel ou imaginaire, de type, vous devez utiliser l' dynamic mot-clé et le compilateur fait le reste.

Lorsque vous utilisez l' dynamic mot-clé à interagir avec une instance normale, le DLR effectue tardive des appels à l'instance de méthodes normales.

L' IDynamicMetaObjectProvider interface permet à une catégorie de prendre le contrôle de sa tardive comportement.
Lorsque vous utilisez l' dynamic mot-clé pour interagir avec un IDynamicMetaObjectProvider mise en œuvre, le DLR appelle l' IDynamicMetaObjectProvider méthodes et l'objet lui-même qui décide quoi faire.

L' ExpandoObject et DynamicObject des classes sont des implémentations de IDynamicMetaObjectProvider.

ExpandoObject est une classe simple qui vous permet d'ajouter des membres à une instance et les utiliser dynamicallié.
DynamicObject est un plus avancé de mise en œuvre qui peut être hérité de fournir facilement un comportement personnalisé.

40voto

Brian Rasmussen Points 68853

dynamic est une déclaration de type. I. e. dynamic x - dire que la variable x type dynamic.

DynamicObject est un type qui le rend facile à mettre en oeuvre IDynamicMetaObjectProvider et donc de remplacer la liaison spécifique de comportement pour le type.

ExpandoObject est un type qui agit comme un sac de propriété. I. e. vous pouvez ajouter des propriétés, des méthodes et ainsi de suite à la dynamique des instances de ce type à l'exécution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X