匿名类型作为对象,如何访问属性?

时间:2009-10-20 09:27:50

标签: asp.net-mvc

我正在为HtmlHelper类添加一些功能。基本上我想根据用户权限自动禁用网页上的链接。

所以我有这个功能:

public static string ActionLinkWithPrivileges(this HtmlHelper htmlHelper, string linkText, string actionName, object routeValues)
    {
        return LinkExtensions.ActionLink(htmlHelper, linkText, actionName, routeValues);
    }

这里的问题是routeValues-argument。它通常作为匿名类型创建,所以我不知道将它投射到什么。这个匿名类型通常有一个名为“id”的属性,但只是编写routeValue.id会给我一个编译器错误。

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

实现接口或使用反射来获取PropertyInfo,然后通过属性集合进行迭代以获得正确的接口。

你当然需要告诉方法要获取的属性的名称,除非它是特定类型。

答案 1 :(得分:0)

这应该有效:

RouteValueDictionary routeVals = new RouteValueDictionary(routeValues);
var value = routeVals["key"];
//RouteValueDictionary is under System.Web.Routing