2012-02-13 10 views
7

Sto provando a creare un po 'di Json nella mia app MVC e voglio solo includere le proprietà dal mio oggetto sorgente, se ha alcuni valori di proprietà, impostato.È possibile creare proprietà al volo, con un oggetto dinamico .NET?

es.

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 e ccccc hanno valori solo: return Json(new { Aaaa = source.Aaaa, Cccc = source.Ccccc.Value };

  2. Dddd solo è stata impostata. return Json(new { Dddd = source.Dddd }

vedere come stavo cercando di creare un oggetto anonimo al volo. Bene, posso farlo perché in questo esempio contrito, so cosa è stato impostato. Ma quando si tratta di codice reale, dovrei fare 'capire' cosa era realmente impostato e poi restituirlo dinamicamente.

L'idea è basata su Stack Exchange's Api Wrapper .. dove hanno alcuni valori facoltativi che restituiscono tramite json, se sono impostati.

+0

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

risposta

11

Date un'occhiata al ExpandoObject, un esempio con XML è dato here

ad es.

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

Henrik, guardato allo Sugar Loaf che expandoobject() roba un po 'indietro . non posso fare a meno di concordare con le osservazioni di "bob" su di esso: http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the -expandoobject.aspx # 10003637 –

Problemi correlati