c# - 如果您能够修改源代码,为什么还要使用扩展方法?
问题描述
以本书为例学习扩展方法,扩展C#中Int32
(int
关键字)的功能结构(在 的情况下不能继承结构和更改源代码Int32
),我意识到需要扩展方法来做三件事:
- 如果继承是不可能的,就像密封类的情况一样;
- 在无法更改源代码的情况下;
- 如果可以但不希望更改类或结构的源代码。
我想知道第三种情况的典型例子是什么。
问题:
当我自己描述类并且可以对其进行更改时,无需使用扩展方法,但为什么在这种情况下,如果我可以更改类中的代码,我可能需要使用扩展方法?
也就是说,我请你举个例子,什么时候我可以更改代码,但这是不可取的和可取的使用扩展方法。
解决方案
有趣的是,我偶然发现了一个可能适用的问题。
你想知道的案例
如果可以修改源,为什么要扩展?
有很多场景,但基线:
如果添加的功能不是类的固有部分,您想要扩展
我给你举个例子
假设您有一个 API 客户端。您创建了 C# 代码来使用此客户端。让我们称之为WebClient
现在,假设您WebClient
在另一个 MVC Web API 应用程序中使用它来获取远程数据。这可以由远程用户调用A
。
有一种情况,您最终会遇到一种情况,您希望A
根据WebClient
.
此代码将在整个 MVC Web API 应用程序中使用,因此:考虑到DRY,您只想编写一次。
所以,不,你有选择:在WebClient
或不。
考虑一下:
由于您选择了该技术,因此存在 MVC Web API 特定功能,但它与WebClient
.
这将是扩展的典型用例。
请参阅:WEB Api 验证时的代码重复作为我的灵感来源。
推荐阅读
- reactjs - 使用 react-beautiful-dnd 获取 DragHandle 错误
- javafx - 使用 FXCollections.observableArrayList() 从数据库中填充 treetableview
- c++ - Qt QString 快速处理问题
- java - Jackson 无法将空字符串值转换为枚举
- http - 尖括号在数据 URI 中有效吗?
- php - PHP,根据页面条件触发 cookie
- excel - Excel VBA 手动转置
- django - 如何在 django-ajax_select 字段中呈现默认值
- amazon-web-services - 使用 Winston 设置 AWS Cloudwatch
- anaconda - Python 3.6 USZIPCODE 安装