2009-03-09 8 views

Répondre

1

Eh bien, vous ne pouvez pas. Un type anonyme, ne peut pas être consulté par nom. Exactement. Vous ne pouvez pas passer le type, le type existe en interne et vous pouvez uniquement exposer le type en tant que System.Object.

Vous pouvez toujours utiliser la réflexion pour déterrer les propriétés et les accès de cette façon, mais à part ça, il n'y a pas moyen de contourner cela.

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

Si vous devez accéder au type, vous devez créer un objet/type défini par l'utilisateur, qui peut être identifié par son nom.

1

Vous ne pouvez pas passer à une vue fortement typé, mais vous pouvez la transformer en un dictionnaire et accéder aux propriétés de cette façon.

Dans le cadre de System.Web.Routing, il y a un nouvel objet appelé « RouteValueDictionary », ce qui peut prendre comme son constructeur un objet anonyme.

L'équipe MVC utilise dans plusieurs de leurs aides.

Exemple:

IDictionary<string, object> myDict = new RouteValueDictionary(anonymousObject); 
Questions connexes