问题标签 [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 投票
3 回答
2566 浏览

c# - Passing interface as a parameter to an extension method

I have used extension methods to extend html helpers to make an RSS repeater:

So I make one of my business objects implement IRSSable, and try to pass this to the HTML helper. But I just cannot seem to make it work, I have tried:

Compiles fine, but null is passed

Intellisense moans about not being able to pass IEnumerable issue to IEnumberable IRSSable

  • So how do you do it? That method I am calling definitly returns IEnumberable<Issue> and Issue definitly implements IRSSAble
0 投票
2 回答
801 浏览

c# - 如何获取泛型方法的 MethodInfo?

我正在尝试获取MethodInfo该方法的对象:

我遇到的问题是如何为Func<TSource, Boolean>位指定类型参数...

帮助表示赞赏。

0 投票
4 回答
4520 浏览

c# - 方法和匿名类型

我知道您不能从方法返回匿名类型,但我想知道 Select 扩展方法如何返回匿名类型。它只是一个编译器技巧吗?

编辑

假设 L 是一个列表。这是如何运作的?

返回类型是 IEnumerable<'a> 其​​中 'a = new {String Name}

0 投票
4 回答
9646 浏览

.net - VB.NET 扩展方法

当我在我的方法上方应用标签时,我得到了错误

类型 System.Runtime.CompilerServices.Extension 未定义。

这是我的样本

我哪里错了?

编辑~直接从这里的 MSDN 文章,同样的错误

我在我的项目中使用 Visual Studio 2008 和 3.5 框架。

解决方案〜该项目在2.0框架上。更改为 3.5 并且可以正常工作。

0 投票
2 回答
146 浏览

javascript - 有谁知道创建基于 MVC 的组件/扩展方法的好文章?

我已经为几个项目开发了几种扩展方法,它们目前严重依赖一些 AJAX 来使零碎工作。问题是他们需要将 JavaScript 文件复制并粘贴到您想要使用它的项目中。

由于这个 JavaScript 文件只需要使用一次(渲染控件的所有实例都使用同一个文件),我想做一些事情,比如将 script 元素添加到通过 web 资源使用的页面的 headers 集合中(将文件作为资源嵌入程序集中)。在 Web 表单中这不是问题 - 您可以将脚本块添加到具有特定 ID 的标题中,并在页面加载时简单地检查它。

什么是 MVC 等价物 - 有没有等价物?

我想要一个不需要消费者复制和粘贴/添加行到页面或配置的解决方案......有什么想法吗?

0 投票
5 回答
2409 浏览

.net - Silverlight 中的 .Net 框架版本:无列表.寻找方法?

今天我发现了一件让我伤心的事情:System.Generic.Collections.List 类型的对象没有很多我喜欢的有用的扩展方法,例如 Find、FindAll、FindIndex、Exists、RemoveAll 等.

VS2008 中的对象浏览器显示这些方法存在于我正在使用的 mscorlib 版本中,但如果我查看 ildasm 中的程序集,它们不存在。

我是否在这里遗漏了一些明显的东西,或者有什么方法可以让我的 Silverlight 应用程序使用它们?

另外,我想知道 Silverlight 的运行时与“真实”运行时之间是否有很好的参考。

谢谢!

0 投票
3 回答
1460 浏览

c# - 为什么 VS 2008 在 Intellisense 中不显示 String 类的扩展方法

由于 String implements IEnumerable<char>,我期待在 Intellisense 中看到 Enumerable 扩展方法,例如,在输入句点时

我期待看到.Select<char>(...),.ToList<char>()等。然后我惊讶地发现扩展方法实际上确实适用于字符串类,它们只是没有出现在 Intellisense 中。有人知道为什么是这样吗?这可能与这个问题有关。

0 投票
2 回答
1912 浏览

c# - 单元测试期间的 C# 扩展方法异常

使用 Visual Studio 2008 / C# / VS 单元测试。

我有一个非常简单的扩展方法,它会告诉我对象是否属于特定类型:

它会被称为:

当我在调试模式下运行代码或调试单元测试时,该方法工作得很好。然而,在我刚刚在上下文中运行所有单元测试的那一刻,我神秘地得到了这个方法的 MissingMethodException。奇怪的是,同一个类中的另一个扩展方法没有问题。

我倾向于问题不是扩展方法本身。我试过删除临时文件,关闭/重新打开/清理/重建解决方案等。到目前为止,没有任何效果。

有没有人在任何地方遇到过这种情况?

编辑:这是代码的简化示例。基本上,这是我能够在没有周围代码包袱的情况下创建的最小的可重现示例。当放入单元测试时,这个单独的方法也会单独抛出 MissingMethodException,就像上面一样。有问题的代码并没有完成手头的任务,就像乔恩提到的那样,它更多的是我目前关注的异常的来源。

解决方案:我尝试了许多不同的方法,同意 Marc 将其视为参考问题的思路。删除引用、清理/重建、重新启动 Visual Studio 不起作用。最终,我最终在我的硬盘驱动器中搜索已编译的 DLL,并将其从任何没有意义的地方删除。删除除 TestResults 文件夹中的所有实例后,我就能够成功地重建并重新运行单元测试。

至于方法的内容,我是在单元测试中发现问题的,但始终无法让这个概念发挥作用。由于 O 是一个 RunTimeType,我似乎没有太多访问它的权限,并尝试使用 IsAssignableFrom() 来让函数正确返回。目前,此功能已从我的验证方法中删除,以便下次重新访问。但是,在删除它之前,我仍然遇到了用许多其他方法开始这篇文章的原始问题。

后解决方案:实际的方法并不像我想象的那么复杂。这是实际的工作方法:

和单元测试来验证它:

0 投票
4 回答
2699 浏览

c# - 自定义 Linq 扩展语法

我编写了一个从列表中获取给定数量的随机记录的函数。目前我可以做类似的事情:

(其中 db 是我的 DataContext 连接到 SQL Server DB)

目前,我在每个需要随机记录的实体中都有这样的功能:

它工作得很好,但我希望它是通用的,所以它可以适用于任何表格,甚至任何项目列表。我尝试了一种扩展方法,例如:

但我得到:

其中突出显示GetRandom<T>

我不明白这里有什么问题。有人可以清除正确的语法吗?

0 投票
1 回答
1062 浏览

linq-to-sql - LINQ to SQL 自动生成的可扩展性方法

当我使用 LINQ to SQL 生成实体类时,我得到了我想要的,但我也得到了一堆其他的可扩展性方法定义。

例如 myField (TEXT) 我得到:

上述可扩展性方法的常见用途是什么?