问题标签 [extension-methods]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2922 浏览

asp.net-mvc - 您是否使用任何自定义 ASP.NET MVC HtmlHelper 扩展?

我有兴趣了解其他开发人员为 ASP.NET MVC HtmlHelper 类创建的自定义扩展

我认为微软的开端不错,但像往常一样,留下了很多空缺

看起来我将不得不创建一些用于渲染图像、将动作链接渲染为图像等。

认为实际上将列表放在一起并为其他一些开发人员节省一些时间和精力可能是有益的,老实说,也为我节省了一些时间。=)

如果您有任何指向 HtmlHelper 类的其他扩展方法的网站链接,请提供!

0 投票
5 回答
2011 浏览

c# - 扩展方法而不是 Null 对象模式

我想知道使用扩展方法来避免检查层次结构中的空值。这个例子:

我知道,有可用的空对象模式,但这种类型的扩展方法的解决方案看起来更好。

你认为,这个解决方案是好是坏(因为坏/好的设计、清晰度,等等)?

请投票“好”或“坏”,你为什么这么认为。帖子被标记为社区。

0 投票
4 回答
1929 浏览

c# - 如何防止提供扩展方法的公共类出现在 Intellisense 中?

有没有办法从 Intellisense 中“隐藏”一个类的名称,其唯一目的是提供扩展方法?

我想从 Intellisense 列表中删除类名,但需要通过 Intellisense 以通常的方式将类的扩展方法提供给外部程序集。

0 投票
6 回答
33374 浏览

c# - 反思以识别扩展方法

在 C# 中是否有一种使用反射来确定方法是否已作为扩展方法添加到类的技术?

给定如下所示的扩展方法,是否可以确定 Reverse() 已添加到字符串类中?

我们正在寻找一种机制来确定在单元测试中扩展方法是由开发人员适当添加的。尝试这样做的一个原因是开发人员可能会将类似的方法添加到实际的类中,如果是,编译器会选择该方法。

0 投票
3 回答
1448 浏览

c# - 在内联数据绑定上下文中使用扩展方法

我正在尝试使用一些扩展方法来对 DateTime 和 Int32 应用一致的格式 - 这在后面的代码中工作得非常好,但是我遇到了数据绑定问题。

我得到:

为了

(在用户控件中包含的网格视图的模板字段内)

即使我在用户控件的顶部包含定义扩展方法的命名空间:

有没有其他人遇到过这个问题,有什么办法可以解决吗?

编辑:我的错误,上面应该是:

IE。我没有错误地引用命名空间(在后面的代码中逐字使用)

0 投票
11 回答
189228 浏览

.net - 哪种方法性能更好:.Any() 与 .Count() > 0?

System.Linq命名空间中,我们现在可以扩展我们的IEnumerable以拥有Any()Count() 扩展方法

最近有人告诉我,如果我想检查一个集合中是否包含 1 个或多个项目,我应该使用.Any()扩展方法而不是.Count() > 0扩展方法,因为.Count()扩展方法必须遍历所有项目。

其次,一些集合有一个属性(不是扩展方法)是Countor Length。使用它们而不是.Any()or会更好.Count()吗?

是的/不?

0 投票
7 回答
8722 浏览

c# - 扩展方法的缺点?

扩展方法是一个非常有用的功能,您可以在任何类中添加许多您想要的功能。但我想知道是否有任何不利因素可能会给我带来麻烦。有什么意见或建议吗?

0 投票
3 回答
4184 浏览

c# - 匿名类型 - 是否有任何区别特征?

有什么东西可以用来确定一个类型是否真的是匿名类型?例如接口等?

目标是创建类似以下内容...

或者这只是匿名类型的美丽?没有什么可以自我识别,因为它采用了新的形状?

注意- 我意识到您可以为对象类编写扩展方法,但在我看来,这似乎有点矫枉过正。

0 投票
4 回答
6720 浏览

c# - 现有的类似于 Parallel.For 的 LINQ 扩展方法?

可能重复:
LINQ 等效于 IEnumerable<T> 的 foreach

用于 ienumerable 的 linq 扩展方法非常方便......但如果您只想对枚举中的每个项目应用一些计算而不返回任何内容,那么它就没有那么有用了。所以我想知道我是否只是错过了正确的方法,或者它是否真的不存在,因为如果它可用的话我宁愿使用内置版本......但我还没有找到一个:-)

我可以发誓在某个地方有一个 .ForEach 方法,但我还没有找到它。与此同时,我确实编写了自己的版本,以防它对其他人有用:

用法是:

myEnumerable.For<MyClass>(delegate(MyClass item) { item.Count++; });

0 投票
5 回答
2664 浏览

c# - 在系统命名空间中编写自己的扩展方法可以吗?

我最近一直在使用扩展方法,并且发现它们有很多用途。我唯一的问题是记住它们在哪里以及使用什么命名空间来获取扩展方法。

但是,我最近想在 System 命名空间、System.Collections 命名空间或其他一些有意义的系统命名空间中编写扩展方法。例如,我实现了以下内容。

这是正确的做法吗?