前面几篇文章我介绍了.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路由配置中的使用,下文我们介绍类和集合初始化器,希望大家喜欢,谢谢!
网友评论