美文网首页
ASP.NET MVC Route 由浅入深系列之八:匿名类

ASP.NET MVC Route 由浅入深系列之八:匿名类

作者: 王维_9bbf | 来源:发表于2019-05-14 10:10 被阅读0次
    梅西湖大剧院 2019长沙互联网峰会

      前面几篇文章我介绍了.NET Web Form 路由的原理和运用,并结合源代码分享了路由映射关系的维护和匹配,接下来我们开始进入.NET MVC路由的部分了。 在分享之前,我们现在学习一下在.NET MVC路由里用到的几个C#新特性,其中有:匿名类,集合初始化器,具名函数和可选函数,这篇文章讲匿名类。

         先放一段测试代码:

    匿名类

      故名思意,匿名类就是“没有名字的类”,用var 关键字来定义,例如: var annoymousType = new { controller = "Home", aciton = "Index" }; 看到出来,我们定义了一个controller为Home,action为Index的匿名类.我们要注意以下几点:

    1)匿名类的属性只能读,而不能修改。

    2)所有匿名类继承于Object。

    3)匿名类的实例不可变,也就是说一旦创建了一个实例,它的属性值就永远的确定了下来,这一点和1)相同。 

         接下来我们可以用ildasm.exe开发工具打开上面这个控制程序,看看annoymousType到底编译成了什么:

    匿名类的MSIL

      可以看到,annoymousType的类名被编译成了如同f_AnnoymousType0`2<<controller>...<action>>的格式,从get_action和get_controller看得出来,这个匿名类的属性值只能读,不能写。

        .NET MVC在配置路由时会用到匿名类,请看下面的代码:

    MVC路由配置

      在MapRoute方法中,我们新增了一个路由名为:Default,访问格式为:{controller}/{action}/{id},默认路由defaults变量为:new { controller = "Home", action = "Index", id = UrlParameter.Optional }.其中默认的路由变量正是一个匿名类。

        今天我们就分享了匿名类的概念和在.NET MVC路由配置中的使用,下文我们介绍类和集合初始化器,希望大家喜欢,谢谢!

    相关文章

      网友评论

          本文标题:ASP.NET MVC Route 由浅入深系列之八:匿名类

          本文链接:https://www.haomeiwen.com/subject/xhvjaqtx.html