学习扩展方法以书本为例扩展C#中Int32
(int
关键字)的函数结构(不能继承结构改源码)在 Int32
的情况下,我意识到三件事需要扩展方法:
- 如果继承是不可能的,例如密封类;
- 在无法更改源代码的情况下;
- 如果可以但不希望更改类或结构的源代码。
我想知道第三种情况的典型例子是什么。
问题:
当我自己描述类并且我可以对其进行更改时,无需使用扩展方法,但为什么在这种情况下我可能需要使用扩展方法,如果我可以只更改我的类中的代码?
也就是说,当我可以更改代码时,我要求你给出一个例子,但这是不可取的和可取的使用扩展方法。
有趣的是,我只是偶然发现了一个可能适用于此的问题。
你想知道的情况
why extend if you can modify the source?
有很多场景,但基线:
如果添加的功能不是类的固有部分,您想扩展
举个例子
假设您有一个 API 客户端。您创建了 C# 代码来使用此客户端。我们称它为 WebClient
现在,假设您在另一个 MVC Web API 应用程序中使用此 WebClient
来获取远程数据。这可以由远程用户 A
调用。
有一个 cass,您最终会遇到这样一种情况,您希望根据 的结果从 MVC Web API 应用程序将特定结果返回给 A
>WebClient
.
此代码将在整个 MVC Web API 应用程序中使用,因此:考虑 DRY , 你只想写一次。
所以,您没有选择:是否在 WebClient
中。
考虑一下:
由于您选择了该技术,所以存在 MVC Web API 特定功能,但它与 WebClient
的固有属性和功能无关。
这将是扩展的典型用例。
参见:Duplication of code when on WEB Api validation作为我的灵感来源。