Entwickler-Ecke

Sonstiges (.NET) - Anonymen Datentyp zur Laufzeit erstellen


rittergig - Mo 29.08.11 14:30
Titel: Anonymen Datentyp zur Laufzeit erstellen
Ich möchte zur Laufzeit ein anonymes Objekt erstellen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
var routedValues = new 
{
    Parameter1 = "wert",
    Parameter2 = "wert2",
    Parameter3 = "wert3",
};

Wie kann ich einen anonymen Datentyp zur Laufzeit erzeugen, um die Properties ("Parameter") mit Werten via eine Schleife hinzuzufügen?

Grüße, Peter


Kha - Mo 29.08.11 14:32

Kannst du nicht ohne großen Aufwand. Daher die Gegenfrage: Warum?


rittergig - Mo 29.08.11 15:03

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Kannst du nicht ohne großen Aufwand. Daher die Gegenfrage: Warum?


Bei ASP.NET MVC kann ich mit der Methode "Html.ActionLink" einen Links erstellen. Die Parameter müssen als anonymes Objekt "routedValues" übergeben werden.
Ich möchte meinen MVC Model eine Methode hinzufügen, das Objekt mit den notwendigen Parametern generiert.

Anders gesagt: Ich will, dass das alle Properties des Modells automatisch als Parametern bei Links übergeben werden.
- dafür werden alle Properties via Reflections ermittelt (das funktioniert bereits)
- nun soll das Parameter-Objekt erstellt werden

Grüße, Peter


Trashkid2000 - Mo 29.08.11 15:12

Suchst Du vielleicht so was hier?

C#-Quelltext
1:
2:
dynamic routedValues = new ExpandoObject();
((IDictionary<stringobject>)routedValues).Add("Parameter1""wert1");

LG


Kha - Mo 29.08.11 15:23

Interessante Idee, aber bin mir nicht sicher, ob das der Reflection-Code von MVC berücksichtigt. Nötig ist das aber sowieso nicht, es gibt selbstverständlich immer Überladungen, die ein gewöhnliches RouteValueDictionary entgegennehmen.

Und deswegen in der Frage immer lieber das eigentliche Ziel erwähnen ;) .

Edit: Gut, der Variablenname wäre natürlich ein Hinweis gewesen :lol: .


rittergig - Mo 29.08.11 17:15

Ihr habt recht, ich habe die überladene Methode, bei welcher ich ein Dictionary mit Parametern übergeben kann, übersehen. (Asche auf mein Haupt)

Grüße, Peter