问题标签 [generic-method]

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 投票
5 回答
1958 浏览

c# - 列表方法() where T : Iclient 无法将客户端对象添加到列表中

公共 IList GetClientsByListofID(IList ids) 其中 T : IClient { IList clients = new List(); 客户。添加(新客户(3));}

我在这里遇到编译器错误:

无法从“Bailey.Objects.Client”转换为“T”

客户端对象实现 IClient 接口。我的目标是尝试放松我的类之间的耦合(学习 DI 的东西 atm)。我在想我可以说它可以使用任何类型的客户端对象并且会被返回。

我完全不在这儿吗?

谢谢

乔恩·霍金斯

0 投票
2 回答
8442 浏览

.net - 如何在非泛型 .NET 类型上获取泛型方法的 MethodInfo?

我有这个小问题,我无法弄清楚要传递给 Type.GetMethod 的参数,以便在非泛型类型上取回泛型方法的 MethodInfo。具体来说,我有这个类型定义:

我在 Type.GetMethod 上尝试了几次,但没有一个会返回 F 方法的 MethodInfo。

我知道我可以调用 Type.GetMethods 甚至 Type.FindMember,但我对 Type.GetMethod 很感兴趣。

有任何想法吗?

谢谢。

编辑

实际上,我的代码有点复杂。泛型方法被重载,所以我不能只使用函数名来使用 Type.GetMethod。我尝试了这些变体:

0 投票
4 回答
6806 浏览

c# - C#:如何使用带有“out”变量的泛型方法

我想创建一个简单的通用函数

用法:

我的问题是你如何编写代码来设置这些值,即。评论部分缺少的代码。

谢谢你的帮助。

0 投票
1 回答
4128 浏览

c# - C# 反射,使用具有“new()”类型约束的方法的 MakeGenericMethod

我正在尝试使用 MethodInfo MakeGenericMethod,如下所示:

针对以下通用方法:

我遇到的问题是我在 MakeGenericMethod 行上出现争论异常,因为我传递的类型不是“new()”

有没有办法解决这个问题??谢谢

0 投票
4 回答
20777 浏览

c# - C#动态调用泛型方法

给定以下接口:

我的命名空间中有以下类

目前我正在实现这个 IRepository,如下所示:

有没有更好的方法来实现这一点?鉴于我们的 Context 不知道我们的数据类型(Teacher、Student),只知道它的接口(ITeacher、IStudent)。

像这样的东西可以工作吗?

0 投票
4 回答
4838 浏览

java - 有没有办法定义一个检查 null 然后创建对象的通用方法?

我想编写一个方法来检查参数在哪里为空,如果是,则返回该类型的新对象。看起来像:

经过一番挣扎和挖掘,我仍然无法实现这一点,在java中它真的可能吗?

一开始我想到了反思。但是当对象为空时,我无法获得 Class 实例,并且如果没有类型 T 的名称,您将无法创建 Class...

更新:

我考虑过将 Class 作为参数传递,但这不是最好的解决方案,如下面的答案所示:)

我当前的解决方案是使用 defaultValue 参数:

这比反射解决方案更快、更安全,并且同样冗长;但是我必须系统地为所有类型的兴趣指定一个 DEFAULT_VALUE,这不是一件容易的事。

0 投票
2 回答
3763 浏览

c# - 如何使用 RhinoMocks 断言具有三种不同类型的泛型方法?

我正在尝试学习 Rhino Mocks AAA 语法,但在断言某个方法(带有任何参数值)被调用时遇到了麻烦。我使用 Machine.Specifications 作为我的测试框架。

这个特定的方法是通用的,我想确保它被三种不同的类型调用了三次。

我为每种类型的函数存根。但我得到了一个有趣的结果。(以下)

结果是两个例外和一个通过。

第一个调用抛出:

System.InvalidOperationException:没有设置要验证的期望,确保操作中的方法调用是虚拟(C#)/可覆盖(VB.Net)方法调用

第二个抛出:

System.InvalidOperationException:录制时仅在模拟方法调用中使用 Arg。预期 1 个参数,已定义 2 个。

第三个通过了……出于某种奇怪的原因。

我还尝试在我的设置中将 GenerateMock() 与 Expect 结合使用,以及将 GenerateStub() 与 Stub 结合使用。两者都得到了完全相同的结果。我一定是做错了什么。

我正在使用:MachineSpec 0.3.0.0 和 RhinoMocks 3.6.0.0

有任何想法吗?

- - -固定的 - - - - -

这是在 Lee 的帮助下的完整(工作版本)。我正在使用一个额外的(非 linq)层。我的实际问题是我的一项测试在离线真实代码中重新使用了错误的 lambda 变量。它应该做某事 = () => repo.AssertWasCalled( o => repo .Save(data)); //错误的lambda

所以这里有一个正确测试的样本供参考。

0 投票
5 回答
23667 浏览

scala - scala泛型方法覆盖

我有一个抽象类:

多个类扩展 Foo 并覆盖方法

是否有可能使用泛型(或其他东西)使覆盖方法具有实现它的子类的参数类型?像这样 :

我正在考虑以下内容,但这似乎不起作用......

任何帮助深表感谢!

谢谢你。

0 投票
2 回答
13489 浏览

c# - 使用反射在具有签名的对象实例上调用泛型方法:SomeObject.SomeGenericInstanceMethod(T 论点)

我怎么打电话SomeObject.SomeGenericInstanceMethod<T>(T arg)

有一些关于调用泛型方法的帖子,但不太像这个。问题是方法参数参数被限制为泛型参数。

我知道如果签名是

SomeObject.SomeGenericInstanceMethod<T>(string arg)

然后我可以得到 MethodInfo

typeof (SomeObject).GetMethod("SomeGenericInstanceMethod", new Type[]{typeof (string)}).MakeGenericMethod(typeof(GenericParameter))

那么,当常规参数是泛型类型时,如何获取 MethodInfo 呢?谢谢!

此外,泛型参数上可能有也可能没有类型约束。

0 投票
3 回答
222 浏览

c# - lambda 表达式中的变量如何给出其值

在下面的例子中如何index获得它的价值?我知道 n 是从 source 自动获得的numbers,但是,虽然含义很清楚,但我看不到 index 是如何赋予其值的:

的签名TakeWhile是: