2012-02-13 12 views
7

Estoy tratando de crear un Json en mi aplicación MVC y solo quiero incluir las propiedades de mi objeto fuente, si tiene algunos valores de propiedades, establecer.¿Es posible crear propiedades sobre la marcha, con un objeto dinámico .NET?

por ejemplo.

public class Foo 
{ 
    public string Aaaa { get; set; } 
    public string Bbbb { get; set; } 
    public int? Ccccc { get; set; } 
    public Lol Dddd { get; set; } 
} 

// Example Outputs.

  1. Aaaa y CCCCC sólo tienen valores: return Json(new { Aaaa = source.Aaaa, Cccc = source.Ccccc.Value };

  2. Dddd sólo se ha establecido. return Json(new { Dddd = source.Dddd }

ver cómo estaba tratando de crear un objeto anónimo sobre la marcha. Bueno, puedo hacer eso porque en este ejemplo contrito, sé lo que se estableció. Pero cuando se trata de código real, tendría que 'descifrar' qué estaba realmente establecido y luego devolverlo de manera dinámica.

La idea se basa en Stack Exchange's Api Wrapper .. donde tienen algunos valores opcionales que devuelven a través de json, si están configurados.

+0

relacionadas: http://stackoverflow.com/questions/2974008/adding-unknown-at-design-time-properties-to-an-expandoobject – Steven

Respuesta

11

Tome un vistazo a la ExpandoObject, se da un ejemplo con xml here

por ejemplo.

dynamic contact = new ExpandoObject(); 
contact.Name = "Patrick Hines"; 
contact.Phone = "206-555-0144"; 
... etc ... 
+1

Henrik, mirado excelentes referencias que expandoobject() rellenar un tiempo atrás . No puedo evitar estar de acuerdo con las observaciones de 'bob's': http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-inc-c-4-0-introducing-the -expandoobject.aspx # 10003637 –

Cuestiones relacionadas