• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

[ASP.NET MVC 小牛之路]02 – C#知识点提要

c# 搞代码 4年前 (2022-01-09) 15次浏览 已收录 0个评论

[ASP.NET
MVC 小牛之路]02 – C#知识点提要

本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性。对于正在学asp.net mvc的童鞋,不防花个几分钟浏览一下。本文要回顾的C#知识点有:特性、自动属性、对象集合初始化器、扩展方法、Lambda表达式和Linq查询。C#资深“玩家”可路过。

本文目录

1.特性(Attributes)

特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。

例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图:

又如,在.Net Remoting的远程对象中,如果要调用或传递某个对象,例如类,或者结构,则该类或结构则必须标注[Serializable]特性。还有,我们在构建XML Web服务时用得很多的一个特性就是[WebMegthod],它可让通过HTTP请求的公开方法的返回值编码成XML进行传递。

特性实际上就是一个类,[Obsolete]特性的实际类名是ObsoleteAttribute,但我们在标注的时候可以不带Attribute后缀,系统在名称转换时会自动给我们加上。

上面说的都是些.NET系统定义的一些特性,当然还有很多。了解如何自定义特性,有利有我们更好的在ASP.NET MVC编程使用特性,比如给Model类的属性标注特性来验证表单输入的合法性(以后进行介绍)。

下面我们来模拟一个ASP.NET MVC经常要用到的StringLenth特性,它用于判断用户输入是否超出长度限制。我们现在来模拟它。先定义一个MyStringLenth特性:

// 用户自定义的带有可选命名参数的 MyStringLenthAttribute 特性类。// 该特性通过AttributeUsage限制它只能用在属性和字段上。[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]public sealed class MyStringLenthAttribute : Attribute {    public MyStringLenthAttribute(string displayName, int maxLength) {        this.MaxLength = maxLength;        this.DisplayName = displayName;    }    //显示的名称,对外是只读的,所以不能通过可选参数来赋值,必须在构造函数中对其初始化。    public string DisplayName { get; private set; }    //长度最大值,对外是只读的,所以不能通过可选参数来赋值,必须在构造函数中对其初始化。    public int MaxLength { get; private set; }    //错误信息,标注时可作为可选命名参数来使用。    public string ErrorMessage { get; set; }    //长度最小值,标注时可作为可选命名参数来使用。    public int MinLength { get; set; }}

上面若不加AttributeUsage限制,特性可以声明在类型(如结构、类、枚举、委托)和成员(如方法,字段,事件,属性,索引)的前面。

然后我们把这个特性应用在下面的Order类之上:

// 应用自定义MyStringLenth特性于Order类的OrderID属性之上。MinLength和ErrorMessage是命名参数。public class Order {    [MyStringLenth("订单号", 6,MinLength = 3, ErrorM<a style="color:transparent">本文来源gao($daima.com搞@代@#码$网</a>essage = "{0}的长度必须在{1}和{2}之间,请重新输入!")]    public string OrderID { get; set; }}

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:[ASP.NET MVC 小牛之路]02 – C#知识点提要

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址