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

c# - 通用接口

这是我的代码

当我编译这个时,我得到一个错误Type parameter declaration must be an identifier not a type

为什么我不能拥有ToEntity<MyOtherClass>却只能拥有ToEntity<T>??

编辑:在MyOtherClass做什么?我正在为多个表/类在实体(相当于实体框架的 POCO)和记录(框架返回的对象)之间进行转换。所以我想用它来做我的类特定转换

0 投票
4 回答
2161 浏览

c# - 如何处理私有成员访问器和集合?

我有这样的班级层次结构

现在我想编写一个单元测试来比较 A 的两个实例是否在属性 KeyedCollection 中具有相同的项目 B。但是,我无法在 A 实例中执行 foreach 循环。我试过的,

这段代码甚至无法编译,因为 C 类访问器没有实现 IEnumerable 接口(它没有实现 KeyedCollection 类的任何接口)。有谁知道我该如何克服这个问题?

我收到的错误消息是

foreach 语句不能对“C”类型的变量进行操作,因为“A_Accessor.C”不包含“GetEnumerator”的公共定义

0 投票
1 回答
530 浏览

java - 为什么对通用 DAO 接口中的方法使用默认访问?

我在浏览时发现了这个通用 DAO 接口的代码:

是否有任何理由让方法使用默认访问修饰符(类/包:是,子类/世界:否)?

PS:一个附加的问题。ID 通常在不依赖于 RDBMS(XML、平面文件...)的实现中找到吗?

0 投票
1 回答
20702 浏览

c# - 如何在 Ninject 中绑定泛型接口

我对 Ninject 还很陌生,当我开始实现通用存储库模式时,我发现自己磕磕绊绊。我想将依赖项 IRepository<IEntityType>绑定到ConcreteRepository<EntityType>类,其中 ConcreteRepository<T> 实现 IRepository<T> 并且 EntityType 实现 IEntityType。我试过这个:

...但是 Ninject 不会接受,因为它不知道也不关心 EntityType 实现了 IEntityType。我该如何去绑定这个依赖?

更新

这是我得到的错误:

错误 3 类型“ICM.Dependency.Repository.ConcreteRepository”不能用作泛型类型或方法“Ninject.Syntax.IBindingToSyntax.To()”中的类型参数“TImplementation”。没有从“ConcreteRepository<EntityType>”到“IRepository<IEntityType>”的隐式引用转换。

解决方案

我仍然不太明白为什么我的绑定不起作用,但显然我在那里错误地使用了泛型。因此,该解决方案与 NInject 并不真正相关。我结束了指定 ConcreteRepository 以将 IEntityType 与 TEntityType 显式连接:

那么注入可以写成如下:

0 投票
2 回答
148 浏览

c# - 泛化存储库接口

任何人都可以提出一种通用化以下接口的方法,这样我就可以拥有一个接口,而不是每个存储库一个。

0 投票
1 回答
860 浏览

c# - 通用接口重载。有效的术语?

这是一个非常基本的方法重载示例,两个方法名称相同但签名不同:

现在假设我定义了两个通用接口,共享完全相同的名称但类型参数数量不同,例如:

我可以说这代表“通用接口重载”吗?还是“重载”术语仅适用于这种情况下的方法?它看起来仍然与方法重载非常相似,因为我们保持完全相同的名称但改变了参数。

如果我不能说“通用接口重载/重载”,对于这两个共享相同名称的不同接口我能说什么?

谢谢和抱歉,如果这是一个愚蠢的问题,但是谷歌搜索“通用接口重载”或“通用接口重载”并没有给我太多,而是关于接口方法重载的结果,这不是我感兴趣的。

0 投票
2 回答
529 浏览

c# - 接口通用层次结构

我有一些相互链接的通用接口。

对于最后一个类 c,我有一个错误:

类型“b”不能用作泛型类型或方法“IC”中的类型参数“T”。没有从“b”到“IB”的隐式引用转换。

在这种情况下如何正确使用通用接口?

0 投票
1 回答
418 浏览

delphi - 在类正在实现的泛型接口中使用在泛型类中声明的嵌套类型

我有一个类 List 的通用类tMyList<B>,其方法 Each() 迭代每个元素并tMyList<A>.enumProc使用参数调用匿名过程 - 当前类型的项目<B>。我想将该类实现为接口,以便于生命周期管理。

问题是我不能在iMyList<A>接口中声明 Each 方法,因为tMyList<A>.enumProc类型未知。据我所知接口不支持嵌套类型?

这是代码:

* 在这种特殊情况下,实施枚举器不是一种选择

0 投票
2 回答
5668 浏览

java - Using isAssignableFrom() with generic interface

I try to find a way to do it but i didn't find out, please let me know if my question has already been asked.

Basically i have a generic interface Evaluator<E, T> with a single method E evaluate(T a, T b) which will be implemented by lot of classes (for each Evaluator implementation correspond a specific algorithm). The class which use those evaluators use an XML configuration file which indicate which Evaluator class to use. To get an Evaluator from a given class name i decided to set a EvaluatorProvider class which build a evaluator from a given classe name.

This method is also generic :

I want to ensure that the class found for this name is a valid subclass of Evaluator using isAssignableFrom() :

But it gives me a warning about unchecked cast, i was wondering then how to take in account the generic type provided for the class checking (using isAssignableFrom() or any other valid java mecanism).

Hope it was clear :).

PS : If you have other suggestion for the solution design please let me know, i am curious about the best way to modelize such system in Java, without run in ServiceProvider pattern which is too big for the project need.

0 投票
1 回答
656 浏览

c# - StyleCop 和 MultipleGenericInterfaces 和 CA1033

我有一个IBakeable<T>有事件的界面OnCooked

几个数据类PieBread

我有一个实现IBakeable<Pie>IBakeable<Bread>

为了实现这一点,我认为我必须明确地实现接口

并且类是继承的

现在我得到相当于:

CA1033 接口方法应该可以被子类型调用

使“BaseHeatSource”密封(如果该类先前已发布,则为重大更改),非显式实现该方法,或实现公开“IBakeable.OnCooked.add(EventHandler)”功能且对派生类可见的新方法.

Msdn 指出

如果派生类型重新实现(显式)继承的接口方法,则不能再访问基实现。通过当前实例引用的调用将调用派生实现;这会导致递归和最终的堆栈溢出。

请注意,添加

不解决规则。

我必须禁止这条规则吗?或者有没有办法解决它?