2011-07-14 19 views
16

probablemente quiero demasiado, pero mi situación esañadir una propiedad a dinámico objeto .NET

public dynamic CreateConfigObject(JobConfigurationModel config) { 
    dynamic configObject = new { }; 

    configObject.Git = new GitCheckout { 
     Repository = config.Github.Url 
    }; 

    return configObject; 
} 

Por supuesto, se produce un error en configObject.Git ya que esta propiedad no existe. Deseo poder agregar cualquier cantidad de propiedades en tiempo de ejecución, sin conocer previamente el número y los nombres de las propiedades;

¿Es posible este caso en C# en absoluto, o mi imaginación de JavaScript enferma comienza a hacerme daño? :)

+0

posible duplicado de [? ¿Cómo puedo crear propiedades dinámicas en C#] (http://stackoverflow.com/questions/947241/how-do-i-create-dynamic-properties-in-c) – nawfal

Respuesta

34

dynamic permite el acceso con tipeo flojo a objetos fuertemente tipados.

Se debe utilizar la clase ExpandoObject, que permite el acceso escrito débilmente a un diccionario interno:

dynamic configObject = new ExpandoObject(); 

configObject.Git = new GitCheckout { 
    Repository = config.Github.Url 
}; 
+0

Simplemente increíble :) –

+2

ExpandoObject, ahora mi objeto favorito de .NET :) –

+11

No use demasiado 'ExpandoObject'. No abandone la seguridad de tipo de tiempo de compilación a menos que realmente lo necesite. – SLaks

Cuestiones relacionadas