C#: Wie entfernen Sie alle null-Eigenschaften eines generischen Objekts mit reflection?

Möchte ich entfernen Sie alle null-Eigenschaften in ein generisches Objekt. Es muss nicht rekursiv sein, eine Ebene tief ist auch in Ordnung.

Der Grund, warum ich brauchen, ist für eine benutzerdefinierte JavascriptConvertor Umsetzung für die JSON-Serialisierung, die gibt mir: {"Name":"Aleem", "Age":null, "Type":"Mitarbeiter"}

Und ich möchte, überspringt das null-Objekt.

Die Funktion für diese Aufgabe nimmt in der objct und gibt einen Dictionary:

IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)

So möchte ich entfernen Sie alle null-Eigenschaften von obj. Alle Eigenschaften verfügen über get-aber wenn die Eigenschaft nicht festgelegt ist, ist die get-zurück null.

  • Wie würden Sie ein Mitglied entfernen? Die Frage ist ein bisschen unklar...
  • Wenn ich mich Recht erinnere, "Mitglieder" sind ebenfalls Eigenschaften und Methoden. Also ich weiß nicht, wie Sie würden "entfernen" entweder.
  • Und wenn Sie null sind, da ist nicht mehr viel zu löschen gibt es?
  • new { Foo = "lol", Bar = null } neue { Foo = "lol" }? Glaube nicht, dass das möglich ist, es sei denn, Sie erstellen Ihre eigene Art in Erinnerung. anonym (generische?) Typen sind Illusionen der compiler, schafft die Typen beim kompilieren...
  • Auch kann eine Methode nicht null sein. Eine Eigenschaft, an und für sich keinen Wert hat (im Sinne von einem Feld), so müssen Sie rufen Sie einen get-accessor den Wert abrufen. Was ist, wenn eine Eigenschaft nicht über einen get-accessor? aleemb unbedingt braucht, um zu erklären, mehr für seine Frage Sinn zu machen.
  • Ich habe geklärt, die Frage ein bisschen weiter.
  • könnten Sie mehr von dem, was Ihr Serialize-Methode ist zu tun? Es würde die Dinge ein bisschen klarer ... für mich zumindest 🙂
  • Hinzugefügt eine generische json-serializer-Erweiterung-Methode, sondern erfordert .net 3.5

InformationsquelleAutor aleemb | 2009-05-03
Schreibe einen Kommentar