美文网首页程序员
.NET手记-定义类和接口的扩展方法

.NET手记-定义类和接口的扩展方法

作者: dceac87d4213 | 来源:发表于2016-02-15 14:07 被阅读90次

对于iOS开发者来说,使用扩展方法是家常便饭。因为有很多的类是有系统框架的定义的,我们不能修改或者不想修改他们的源码,但是我们又想要给他添加一些扩展方法来使用。这时定义扩展方法就是很有用的方式了,正如iOS开发中的Category一样,C#也有着相应的实现。

下面我会给大家演示一个小Demo,来介绍如何为C#类或接口定义扩展方法。

1.创建一个基础类,命名为GuestResponse.cs

using System.ComponentModel.DataAnnotations;

namespace PartyInvites.Models { public class GusetResponse { [Required(ErrorMessage="Please input your name")] public string Name { get; set; } [Required(ErrorMessage="Please input your email")] [RegularExpression(".+\\@.+\\..+",ErrorMessage="Please enter a valid email address")] public string Email { get; set; } [Required(ErrorMessage="Please input your phone number")] [RegularExpression("\\d+",ErrorMessage="Please enter a valid phone number")] public string Phone { get; set; } [Required(ErrorMessage="Please specify whether you will attend")] public bool? WillAttend { get; set; } }

}

这是一个很简单的类,用于一个ASP.NET MVC项目中,下面我们需要在不改动其源码情况下为其新增扩展方法。

2.创建一个扩展方法类,命名为MyExtensionMethods.cs

namespace PartyInvites.Models { public static class MyExtensionMethods { public static string TestExtensionMethod(this GusetResponse guestResponse) { return guestResponse.Name; } } }

其中有个扩展方法TestExtensionMethod,关键在于他的参数,this关键字将此方法标记为扩展方法。GuestResponse参数告诉.NET此扩展方法用于GuestResponse类,最后一个参数 guestResponse用于引用GuestResponse的实例。

3.到了这一步,我们就可以直接使用此扩展方法,这里我直接在代码里面调用它。

var guestResponse = new GusetResponse(); var result = guestResponse.TestExtensionMethod();

注意:只有项目和扩展方法类在同一作用域中,.NET才会识别他们。定义接口扩展方法的方式和定义类的扩展方法基本一致,大家可以自行尝试。

相关文章

  • .NET手记-定义类和接口的扩展方法

    对于iOS开发者来说,使用扩展方法是家常便饭。因为有很多的类是有系统框架的定义的,我们不能修改或者不想修改他们的源...

  • 2019-06-30 Java接口、内部类和包

    接口 一、接口定义 接口是由常量和抽象方法组成的特殊类。接口是对abstract类的进一步扩展。接口中的方法都是未...

  • Kotlin-面向对象-进阶

    扩展 扩展方法 Kotlin支持扩展方法和扩展属性。语法:被扩展的类/接口名.方法名() 父类不能使用子类的扩展方...

  • 23、扩展方法

    1.定义: 2.定于扩展方法 Personl类的定义 为Person类扩展方法 扩展方法被定义为静态方法,但它们是...

  • TS typescript 接口 interface

    接口之间叫继承(extends) 类和接口之间叫实现(implements) 基础定义接口 常用接口定义方法 类的类型

  • 每天学一点 Kotlin -- 类的进阶:扩展

    1. 扩展 1.1 类的扩展是给类增加新的方法或属性。 2. 扩展类的方法 1.2 扩展的语法:和定义函数差不多,...

  • 协议扩展

    协议扩展 在Swift 1.0 时代,协议(Protocol)基本上类似一个接口,定义若干属性和方法,供类、结构体...

  • 抽象和接口的不同

    接口只有定义, 欺负不能再接口中实现, 只有实现接口的类才能实现接口中定义的方法, 而抽象类可以定义和实现, 即其...

  • 自定义实现克隆对象的两种方法

    方法1 定义基类 模型继承基类 使用 方法2 定义扩展方法 用法

  • 抽象工厂模式

    新增抽象工厂接口 CourseFactory(课程工厂) 新增手记的抽象类 和 抽象方法 新增视频的抽象类 和 抽...

网友评论

    本文标题:.NET手记-定义类和接口的扩展方法

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