问题标签 [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 回答
2118 浏览

c# - 用属性扩展字符串类?

我有一个应用程序,我需要用公司名称填充一个文本框,并且我已经用数据库中所有可用的公司名称填充了一个自定义 AutoCompleteStringColection。当用户通过键入并从列表中选择一个新公司名称来更改公司名称时,我需要拥有所选公司的 id (Guid),以便我可以进行查找并获取公司的其余信息。因为公司名称不能保证是唯一的,所以我无法对名称进行查找并期望拥有正确的记录。我查看了扩展字符串类,但我能找到的只是添加方法的示例。我尝试通过添加一个变量来存储 id 以及获取和设置 id 的方法,但是在检索 id 时它始终是最后一个 id 集。可以通过扩展将属性添加到类中吗?我已经改变了我试图做的事情来查找公司名称并显示一个列表,如果返回多个匹配项,用户将从中选择,但我仍然想知道我是否可以通过这种方式添加属性以防万一它又出现了。

0 投票
2 回答
4251 浏览

c# - 使用 lambda 选择子对象集合

我有以下类对象:

...所以在测试存储库中,我正在创建测试数据,如下所示:

..所以现在我有一些很好的测试数据。对象树/链接对象对我很重要。

所以我想在需要时从这棵树中返回单个对象集合。例如,如果我想要整棵树,我可以只返回包含所有子对象的 VacancyCategory 列表——太好了。但现在我只想返回 VacancySubCaregory 项目(全部 9 个)。这将是我对测试存储库的公共方法:

..显然无一例外。我有一个名为 _categories 的成员字段,其中包含 GetVacancyCategoriesWithAllChildCollections 方法的结果。所以我一直在尝试像

..但我似乎无法返回 VacancySubCategory 对象的列表。我似乎总是选择根集合(即 VacancyCategory 对象的结果集)。我究竟做错了什么?我确定它很简单……但它让我发疯!

编辑

谢谢马特。

您的建议使我想到了这一点:

..效果很好。你是冠军

0 投票
3 回答
1881 浏览

python - 如何在 Django 中链接视图?

我正在实施James Bennett的优秀django-contact-form但遇到了障碍。我的联系页面不仅包含表单,还包含附加的平面页面信息。

在不重写联系表单使用的现有视图的情况下,我希望能够包装或链接视图。这样,我可以通过上下文注入一些额外的信息,以便表单和平面页面数据都可以在同一个模板中呈现。

我听说它提到这是可能的,但我似乎无法弄清楚如何使它工作。我创建了自己的包装视图,称为联系表单视图,并尝试检查 HttpResponse 对象以查找我可以附加到的属性,但我似乎无法弄清楚它是哪个(如果有的话)。

编辑: James 评论说最新的代码可以BitBucket 上找到。

0 投票
1 回答
693 浏览

c# - 编写泛型扩展方法时的类型推断问题

我真的很讨厌有时IDictionary<TKey, TValue> [key]如果字典中不存在密钥,将如何抛出异常。

当然有TryGetValue(),但这似乎已经针对性能而非可用性进行了优化。

所以我想,哦,我会为它做一个扩展方法——我做了:

这很好用,除了我似乎无法让类型推断工作。

显然我希望能够做到以下几点:

然后能够访问该值:

我看过一些关于类型推断的东西,将Jon Skeet 的文章甚至源代码引入System.Linq.Enumerable反射器中,但似乎遗漏了一些东西。

这有效:

但这不是

我该怎么办。

PS。我只是在寻找通用类型推断问题的解决方案,而不是任何其他建议。谢谢。

0 投票
6 回答
19361 浏览

python - Python中的扩展方法

Python 有没有像 C# 这样的扩展方法?是否可以调用如下方法:

在现有类型上,例如int

0 投票
5 回答
2969 浏览

c# - 如何在第三方 SDK 中对多个不相关的类型应用通用的扩展方法?

我开始爱上扩展方法,但我只是不知道如何仅为确定的 Object 类型创建 EM。

我有例如:

我的问题是我想在 Person 对象中也有这个方法,这就是我命名的原因

有没有办法让 AddPhoneNumber 处理提供的对象?

或者解决方案是

谢谢你。

0 投票
2 回答
2998 浏览

c# - C#序列化扩展方法的问题

我真的很喜欢 TWith2Sugars 在这里发布的扩展方法。我遇到了一个奇怪的问题。当我将它放入共享类库并调用序列化函数时,出现以下错误:

MyType 类型不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。

我环顾了一下,发现 XmlSerializer 只能序列化它知道的类型。我将其解释为类库中的类,而不是我基于该库构建的项目。

有没有解决的办法?这个函数可以放在类库中还是需要在每个使用它的项目中?

更新:

我弄清楚是什么导致了这个问题。我有以下代码:

这是导致错误的原因。当我将代码更改为:

一切运行良好。所以,吸取教训 - 不要尝试(反)序列化通用对象。我最喜欢我引用的链接的一点是我不必在我的类上放置任何 XML 属性标签。扩展方法刚刚奏效。

出于结束问题的目的,我将通过说明 [XmlInclude] 使用的代码示例将答案授予扩展Marc 的答案(包括 Marc)的任何人。

0 投票
2 回答
621 浏览

c# - LINQ 相关计算分配

我在 C# 中使用以下模式:

我想做的是:

所以问题是:如何修改此模式以允许分配一个依赖于在分配期间计算的其他值的值?

(可能有人会指出 d 应该是一个进行计算并返回值的属性。这是一个人为的例子。假设 d 的值是使用除了 c 和 b 之外的其他值计算的,这些值以后不可用。 )

0 投票
13 回答
86710 浏览

c# - 我可以“乘”一个字符串(在 C# 中)吗?

假设我有一个字符串,例如,

我想基本上写多次,取决于一些整数值。

编辑:我知道我可以轻松编写自己的函数来实现它,我只是想知道是否有一些我不知道的奇怪的字符串运算符

0 投票
8 回答
358 浏览

c# - 这是对 ExtensionMethod 的良好使用吗?

我刚刚在以下行中写了一个 if 语句

我总是不得不重复“价值==”部分,这让我很恼火。在我看来,除了使它难以阅读之外,这没有任何目的。

我编写了以下 ExtensionMethod 应该使上述场景更具可读性:

现在我可以简单地写

这是 ExtensionMethod 的一个很好的用法吗?

编辑:

感谢所有伟大的答案。备案:我保留了该方法。虽然您可以简单地使用的建议new []{value1,value2,value3,value4}.Contains(value)是正确的,但我只是更喜欢从左到右阅读这种 if 语句(如果这个值等于其中任何一个,而不是这些值是否包含这个值)。在每个对象的智能感知中显示另一种方法对我来说不是问题。