Ich habe eine Methode, die eine Klasseninstanz zurückgibt. z.B.Geben Sie eine anonyme Klasse zurück, die einer benannten Klasse ein Feld hinzufügt
public User GetUser(int id) { return new User(); }
In den meisten Fällen ist dies gut genug, aber ich habe einen Fall, in dem ich eine andere eingereicht müssen die User
Objekt hinzugefügt. Wie kann ich eine benannte Klasse erstellen, die diese Klasse erweitert?
Ist es mit anonymen Klassen möglich? vielleicht etwas wie das:
public object GetExtendedUser(int id)
{
return GetUser(id).extendsAnonymous(new {
avatar: "~/avatar/bird.png"
});
}
Von dem, was ich bis jetzt gesehen habe, ist es nicht möglich. Id muss entweder eine benannte Klasse deklarieren oder die ursprünglichen Felder explizit in einer anonymen Klasse deklarieren:
public object GetExtendedUser(int id)
{
User user = GetUser(id);
return new {
username: user.username,
role = user.role,
...
avatar: "~/avatar/bird.png"
};
}
Aber das ist hässlich.
Gibt es eine nette Lösung?
, das wie es aussieht, funktionieren könnte, aber es ist ein bisschen zuviel des Guten für meine Situation – summerbulb
Auch will ich nicht 'User' – summerbulb
ändern Wenn Sie Benutzer nicht ändern möchten Sie ein verwenden könnte ExpandoObject und verwende Reflektion, um über die Eigenschaften des User-Objekts zu iterieren und sie dem ExpandoObject hinzuzufügen, aber das ist wahrscheinlich noch mehr wie Overkill! :) – DoctorMick