2009-03-09 4 views

Antwort

1

Nun, Sie können nicht. Ein anonymer Typ, auf den nicht mit dem Namen zugegriffen werden kann. Das ist der springende Punkt. Sie können den Typ nicht übergeben, der Typ existiert intern und Sie können den Typ nur als System.Object verfügbar machen.

Sie können immer Reflektion verwenden, um die Eigenschaften auszugraben und auf diese Weise darauf zuzugreifen, aber ansonsten gibt es keinen Weg.

var q = new { MyProperty = "Hello World" }; 
var t = q.GetType(); 
var hello = t.GetProperty("MyProperty").GetValue(q, null) as string; 
Console.WriteLine(hello); 

Wenn Sie den Typ zugreifen müssen, sollten Sie ein benutzerdefiniertes Objekt/Typ erstellen, die mit Namen identifiziert werden kann.

1

Sie können es nicht an eine stark typisierte Ansicht übergeben, aber Sie können es in ein Wörterbuch umwandeln und auf diese Weise auf die Eigenschaften zugreifen.

Als Teil von System.Web.Routing gibt es ein neues Objekt namens "RouteValueDictionary", das als Konstruktor ein anonymes Objekt annehmen kann.

Das MVC-Team verwendet dies in vielen ihrer Helfer.

Beispiel:

IDictionary<string, object> myDict = new RouteValueDictionary(anonymousObject); 
Verwandte Themen