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

2019-05-14  本文已影响0人  王维_9bbf
梅西湖大剧院 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路由配置中的使用,下文我们介绍类和集合初始化器,希望大家喜欢,谢谢!

上一篇下一篇

猜你喜欢

热点阅读