问题标签 [generic-interface]

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 投票
1 回答
390 浏览

c# - 使用 Autofac 注册和解析具有许多泛型参数的开放泛型类型

由于通用接口,我想解决一个开放的通用服务。我使用自动法。

每个具体服务仅适用于具体类。

我只能用单个generic param[see SingleOpenGenericResolveTest] 解决一项服务。是否有可能注册和解决许多服务T-params[参见MultiOpenGenericResolveTest]?

我只添加了一个具体类,IService但它可能是很多类T。(TRegion : Region, TRegion : BigRegion等...)

这是 NUnit 3 测试,或者您可以在此处下载我的解决方案:https ://www.dropbox.com/s/vqmdwb6hwmzgjrb/AutofacResolveTests.zip?dl=0

0 投票
2 回答
265 浏览

c# - C# 检查泛型接口的实现

如何检查一个类是否以任何方式实现了泛型接口?

我有以下内容:

有没有办法使用这个接口来检查一个参数是否实现了通用接口而不提供 T? 传递基类不匹配,使用 SomeQueryDto 类会失败

我可以更改接口以实现另一个非通用接口并检查它,但是类可以只使用它而根本没有通用接口:

0 投票
0 回答
168 浏览

c# - 具有泛型接口的泛型方法

我有这个方法

该方法中的部分代码是这样的:

我得到下一个错误

类型参数“T”不能与“as”运算符一起使用,因为它没有类类型约束,也没有“类”约束


我试图将代码更改为此:

现在我得到这个错误:

无法将类型“DataService.Classes.IKeyable”隐式转换为“T”。存在显式转换(您是否缺少演员表?)


为什么即使我设置了也不能将 IKeyable 转换为 T where T : IKeyable<TKey>

任何人都知道我该如何解决这个问题?

0 投票
1 回答
181 浏览

pointers - 可空指针作为 Vala 中的返回值

想象一下我们有这样的东西(这只是一个例子)

这段代码工作得很好,但问题是它Foo必须是通用的public abstract T *f(),所以Toto必须实现Foo<double>,但是

`double' 不是受支持的泛型类型参数

(我的第一个问题是“为什么?”,据我所知,我可以使用 int 例如没有任何问题)

所以它是Foo<double?>,我需要类似的东西double i = (!) *(a.f()),但它只是不起作用(在 C 级别)

错误:无效表达式的使用无效i = (gdouble) (*(*_tmp1_));

那么我该如何使用f()方法呢?

(我的 vala 版本是 0.36.3)

0 投票
1 回答
1425 浏览

c# - 在 Unity Dependency Injection c# 中注入通用接口的 IEnumerable

我正在开发一个 Web API 2 应用程序并使用 Unity 依赖注入。

我有多种类型的过滤器:名称、品牌、类型...

我想创建一个名为:IFilterService 的接口并强制所有其他类实现它,然后我调用此接口的 IEnumerable 并使用正确的类型注入它。

界面是:

课程如下:

控制器就像:

一切正常:唯一的问题是在 Unity 依赖注入中注册接口和类。

我收到此错误:

错误 CS0305 使用泛型类型“IFilterService”需要 1 个类型参数

我尝试过的相同代码但具有非通用接口并且工作正常。

如何修复错误?一点解释可能会非常有用。谢谢你。

0 投票
1 回答
19597 浏览

java - 作为原始类型的成员对方法的未经检查的调用

我的项目中显示了以下警告-

未经检查地调用“getWeatherData(T,Boolean,String)”作为原始类型“IWeatherCallbackListener”的成员。

我创建了以下界面 -

并以下列方式调用它,

我已经在我的 MainActivity 中实现了这个接口,并将该方法称为 -

谁能帮忙解释一下这个警告。

0 投票
1 回答
168 浏览

generics - 使用定义了约束的泛型时,如何解决与无参数构造函数有关的问题

我有一个类,我尝试在我的StartUp.cs文件中创建依赖注入,就像这样

我也尝试将 the 传递给这样IContextFactory的构造函数

public BlogPostRepository(IContextFactory<BlogPostContext> blogPostContext)

但我在上面的行中收到错误说明

“BlogPostContext”必须是具有公共无参数构造函数的非抽象类型,以便在泛型类型或方法“IContextFactory”中将其用作参数“T”

我不知道为什么,因为我new T()在接口声明中用作约束。

这是我要实例化的类

通用接口及其具体实现

0 投票
0 回答
57 浏览

c# - C#。强制泛型接口中的类型参数是实现该接口的类的类型

假设我有以下界面:

我想知道是否可以强制任何实现此接口的类必须提供自己的类名作为类型参数。考虑IEquatable<T>接口,这样做是完全合法的:

虽然没有任何意义对吧?假设现在我IFoo按以下方式修改:

我不想做以下事情:

到目前为止,我已经尝试过:

它有点工作:

但:

我想到的另一种方式是抽象基类,如果事情不是我想要的方式,就会崩溃并出现一个漂亮的运行时异常:

现在这个基类可以工作,但是我遇到了已经从另一种类型继承的现有类型的问题......

是否有任何其他解决方法或设计模式可能在这里有所帮助?

0 投票
2 回答
100 浏览

java - 使用抽象参数调用 Java 泛型接口

我知道有很多类似的问题,但如果可能的话,我没有找到一个好的和干净的解决方案。我正在用抽象类型的子类实现一个通用接口。问题是,当我调用它们时,我要么必须在 switch/case 中进行类型转换,要么在接口实现中的每个方法中进行类型转换,我无法找到一个好的和干净的方法......我最好只写下一个简短的例子。

现在两种类型的处理器都有一个接口

我正在苦苦挣扎的是一种基于 ObjAbstractType 调用这些处理器的方法。我有一个作为中间件服务器的类?或者我应该怎么称呼它。:

想法是通过单个开关/机箱简单地获得正确的处理器:

这就是我想要的,它还负责将 objAbstract 类型转换为 abcMethod 的实际类型,问题是它会导致 RawType 警告不会破坏代码,但我想摆脱它。

这就是我卡住的地方......因为如果我将处理器转换为这样的特定类型:

我将无法从 getProcessor 方法返回抽象接口,因此我必须使用 ObjAbstractType 及其所有方法实现这些接口,并在每个处理器的所有方法中进行类型转换,例如:

另一个解决方案可能是在处理器中间件类中有一个开关/案例并在其中转换 ObjAbstractType,但我必须在 abcMethod 和所有其他方法中编写该开关,或者从 getProcessor 方法返回处理器和转换的 ObjType ......所以我必须返回一些包含两者的 dto。:/

您是否有任何想法/模式可以帮助我摆脱 RawType 调用警告,而无需使用更多开关/案例或类型转换扩展代码?祝你有美好的一天,我会很高兴任何讨论,大卫。

0 投票
1 回答
542 浏览

perl - 如何在 OTRS 6 中使用通用接口获取用户相关数据?

我想知道如何使用通用接口获取用户数据。似乎没有控制器来获取用户数据......这些是唯一的控制器: 在此处输入图像描述 那么如何将用户方法添加到我的网络服务?我尝试在我的 webservice.yml 中添加一个用户部分并重新导入它:

但这没有用。OTRS 说 Kernel::System::User 没有控制器。我也尝试只将类型设置为用户。同样的错误。

由于通用接口取代了已弃用的 RPC.pl API,它至少应该具有相同的方法集。否则这不会是对 API 的改进吧?