首页 > 解决方案 > 如果您能够修改源代码,为什么还要使用扩展方法?

问题描述

以本书为例学习扩展方法,扩展C#中Int32int关键字)的功能结构(在 的情况下不能继承结构和更改源代码Int32),我意识到需要扩展方法来做三件事:

  1. 如果继承是不可能的,就像密封类的情况一样;
  2. 在无法更改源代码的情况下;
  3. 如果可以但不希望更改类或结构的源代码。

我想知道第三种情况的典型例子是什么。


问题:

当我自己描述类并且可以对其进行更改时,无需使用扩展方法,但为什么在这种情况下,如果我可以更改类中的代码,我可能需要使用扩展方法?

也就是说,我请你举个例子,什么时候我可以更改代码,但这是不可取的和可取的使用扩展方法。

标签: c#extension-methods

解决方案


有趣的是,我偶然发现了一个可能适用的问题。

你想知道的案例

如果可以修改源,为什么要扩展?

有很多场景,但基线:

如果添加的功能不是类的固有部分,您想要扩展

我给你举个例子


假设您有一个 API 客户端。您创建了 C# 代码来使用此客户端。让我们称之为WebClient

现在,假设您WebClient在另一个 MVC Web API 应用程序中使用它来获取远程数据。这可以由远程用户调用A

有一种情况,您最终会遇到一种情况,您希望A根据WebClient.

此代码将在整个 MVC Web API 应用程序中使用,因此:考虑到DRY,您只想编写一次。

所以,不,你有选择:在WebClient或不。

考虑一下:


由于您选择了该技术,因此存在 MVC Web API 特定功能,但它与WebClient.

这将是扩展的典型用例。

请参阅:WEB Api 验证时的代码重复作为我的灵感来源。


推荐阅读