动态生成匿名类型

时间:2012-12-21 15:57:46

标签: asp.net-mvc-3 c#-4.0

我有一个反序列化这个xml的应用程序:

<SpecialRoutesList>
    <SpecialRoutes>
        <SpecialRoute>
            <Name>TestRoute1</Name>
            <Pattern>TestRouteUrl1</Pattern>
            <Defaults>
                <Controller>Home</Controller>
                <Action>TestRoute1</Action>
                <Params>
                    <Key>id</Key>
                    <Value>1</Value>
                </Params>
            </Defaults>
        </SpecialRoute>
        <SpecialRoute>
            <Name>TestRoute2</Name>
            <Pattern>TestRouteUrl2</Pattern>
            <Defaults>
                <Controller>Home</Controller>
                <Action>TestRoute2</Action>
                <Params>
                    <Key>id</Key>
                    <Value>1</Value>
                </Params>
            </Defaults>
        </SpecialRoute>
    </SpecialRoutes>
</SpecialRoutesList>

我有兴趣使用这个反序列化的信息来映射每条路线:

foreach(SpecialRoute route in SpecialRoutesList.SpecialRoutes) {
    routes.MapRoute(route.Name, route.Pattern, new { ?????????? }, ????????);
}

要设置使用匿名类型所需的路由的默认值,那么如何使用这些匿名类型,在运行时从我的反序列化类获取键和值?

由于

此致

1 个答案:

答案 0 :(得分:1)

routes.MapRoute()从默认值构建RouteValueDictionary。因此,您可以从xml反序列化/构建Dictionary<string,object>并将其传递给routes.MapRoute()。与约束参数相同。

更新:默认构建为字典

var defaults = new Dictionary<string, object> {{"controller", "Account"}, {"action", "Login"}};

routes.MapRoute(
  "Default", // Route name
  "{controller}/{action}", // URL with parameters
  defaults
);