7 Stimmen

Ist es möglich, Eigenschaften on the fly zu erstellen, mit einem .NET-Dynamic-Objekt?

Ich versuche, in meiner MVC-App etwas Json zu erstellen, und ich möchte nur die Eigenschaften aus meinem Quellobjekt einbeziehen, wenn sie einige Eigenschaftswerte haben.

zum Beispiel.

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

// Beispiel Ausgaben.

  1. Aaaa und Ccccc haben nur Werte: return Json(new { Aaaa = source.Aaaa, Cccc = source.Ccccc.Value };

  2. Dddd wurde nur festgelegt. return Json(new { Dddd = source.Dddd }

Sehen Sie, wie ich versucht habe, ein anonymes Objekt on-the-fly zu erstellen. Nun, das kann ich tun, weil ich in diesem fiktiven Beispiel weiß, was festgelegt wurde. Aber wenn es um echten Code geht, müsste ich 'herausfinden', was wirklich gesetzt wurde, und das dann dynamisch zurückgeben.

Die Idee basiert auf Stack Exchange's Api Wrapper .. wo sie einige optionale Werte haben, die sie per Json zurückgeben, wenn sie festgelegt sind.

12voto

Henrik Gering Punkte 1617

Werfen Sie einen Blick auf das ExpandoObject, ein Beispiel mit xml wird hier gegeben

z.B.

dynamic kontakt = new ExpandoObject();
kontakt.Name = "Patrick Hines";
kontakt.Telefon = "206-555-0144";
... usw ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X