2012-02-13 11 views
7

Próbuję utworzyć Json w mojej aplikacji MVC i chcę tylko uwzględnić właściwości z mojego obiektu źródłowego, jeśli ma on pewne wartości właściwości, ustawić.Czy jest możliwe tworzenie właściwości w locie, z dynamicznym obiektem .NET?

np.

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 i CCCCC mają wartości tylko: return Json(new { Aaaa = source.Aaaa, Cccc = source.Ccccc.Value };

  2. DDDD tylko został ustawiony. return Json(new { Dddd = source.Dddd }

Zobacz, jak starałem się utworzyć anonimowy obiekt na bieżąco. Mogę to zrobić, ponieważ w tym skruszonym przykładzie wiem, co zostało ustawione. Ale jeśli chodzi o prawdziwy kod, musiałbym "rozgryźć" to, co było naprawdę ustawione, a następnie dynamicznie to zwrócić.

Pomysł opiera się na Stack Exchange's Api Wrapper .. gdzie mają pewne opcjonalne wartości, które zwracają przez json, jeśli są ustawione.

+0

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

Odpowiedz

11

Spójrz na ExpandoObject, przykład z xml podano here

np.

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

Henrik, spojrzał powo tym expandoobject() rzeczy jakiś czas temu . Nie mogę nie zgodzić się z obserwacjami "boba" na ten temat: http://blogs.msdn.com/b/csharpfaq/archive/2009/10/01/dynamic-in-c-4-0-introducing-the -expandoobject.aspx # 10003637 –

Powiązane problemy