问题标签 [generics]

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 回答
21065 浏览

c# - Dynamically Create a generic type for template

I'm programming WCF using the ChannelFactory which expects a type in order to call the CreateChannel method. For example:

In my case I'm doing routing so I don't know what type my channel factory will be using. I can parse a message header to determine the type but I hit a brick wall there because even if I have an instance of Type I can't pass that where ChannelFactory expects a generic type.

Another way of restating this problem in very simple terms would be that I'm attempting to do something like this:

Is there an approach to this I can leverage within C#?

0 投票
7 回答
13510 浏览

c# - 如何为泛型类编写 C# 扩展方法

这应该是一个简单的。

我想向 System.Web.Mvc.ViewPage< T > 类添加一个扩展方法。

这个扩展方法应该怎么看?

我的第一个直觉想法是这样的:

解决方案

一般的解决方案是这个答案

扩展 System.Web.Mvc.ViewPage 类的具体解决方案是下面的回答,从通用解决方案开始。

不同之处在于,在特定情况下,您需要一个泛型类型的方法声明和一个将泛型类型强制为引用类型的语句。

0 投票
4 回答
5070 浏览

java - 如何获取参数化的类实例

由于引入了泛型,Class 被参数化,因此 List.class 产生 Class<List>。这很清楚。

我无法弄清楚的是如何获得一个自身参数化的类的实例,即 Class<List<String>>。就像在这个片段中一样:

我经常遇到这个问题的变体,但我仍然不知道是我错过了什么,还是真的没有更好的方法。感谢您的建议。

0 投票
29 回答
531423 浏览

java - 在Java中创建泛型类型的实例?

是否可以在 Java 中创建泛型类型的实例?根据我所看到的,我认为答案是no由于类型擦除),但如果有人能看到我遗漏的东西,我会很感兴趣:

编辑:事实证明,超级类型令牌可以用来解决我的问题,但它需要大量基于反射的代码,正如下面的一些答案所示。

我将把这个开放一段时间,看看是否有人提出与 Ian Robertson 的Artima 文章截然不同的东西。

0 投票
29 回答
67888 浏览

c# - 泛型有什么好处,为什么要使用它们?

我想我会把这个垒球提供给任何想把它打出公园的人。什么是泛型,泛型的优点是什么,为什么,在哪里,如何使用它们?请保持相当基本。谢谢。

0 投票
22 回答
430072 浏览

c# - 创建将 T 限制为枚举的通用方法

我正在构建一个函数来扩展这个Enum.Parse概念

  • 允许在未找到 Enum 值的情况下解析默认值
  • 不区分大小写

所以我写了以下内容:

我得到一个错误约束不能是特殊类System.Enum

很公平,但是是否有一种解决方法来允许通用枚举,或者我将不得不模仿该Parse函数并将类型作为属性传递,这会强制对您的代码进行丑陋的装箱要求。

编辑以下所有建议都非常感谢,谢谢。

已经确定(我已经离开循环以保持不区分大小写 - 我在解析 XML 时使用它)

编辑:(2015 年 2 月 16 日)Christopher Currens在下面的 MSIL 或 F# 中发布了一个编译器强制类型安全的通用解决方案,非常值得一看,并点赞。如果解决方案在页面上进一步冒泡,我将删除此编辑。

编辑 2:(2021 年 4 月 13 日)由于这个问题现在已经得到解决和支持,自 C# 7.3 以来,我已经改变了接受的答案,尽管全面阅读顶级答案对于学术和历史兴趣是值得的 :)

0 投票
3 回答
1048 浏览

java - 通用方法类型安全

我有NodeTypes和Nodes的概念。ANodeType是一堆元数据,您可以从中创建Node实例(很像整个类/对象关系)。

我有各种NodeType实现和各种节点实现。

在我的 AbstractNodeType (NodeTypes 的顶级)中,我有 ab 抽象createInstance()方法,一旦由子类实现,它将创建正确的 Node 实例:

在我的NodeType实现中,我实现了这样的方法:

这一切都很好,但public Thing createInstance()会产生关于类型安全的警告。具体来说:

类型安全:来自 ThingType 类型的 createInstance() 的返回类型 Thing 需要未经检查的转换以符合来自 AbstractNodeType 类型的 T

我做错了什么导致这样的警告?

我如何重构我的代码来解决这个问题?

@SuppressWarnings("unchecked")不好,我希望通过正确编码来解决这个问题,而不是忽略问题!

0 投票
8 回答
6543 浏览

c# - 学习 .NET 泛型的最佳资源?

我从未在工作中使用过任何 .NET 泛型,但我知道它们相当流行。有没有人有任何好的链接或书籍建议来学习它们?作为奖励;我只是模糊地了解.NET 泛型集合是什么以及它们的作用......有没有人有任何实际的例子来说明它们如何比.NET 中的普通集合获得更大的优势?

0 投票
1 回答
478 浏览

c# - 如何使用 .Net 泛型来继承模板参数?

我希望能够做到这一点。

这是对象结构

这行得通吗?

0 投票
12 回答
6255 浏览

c# - 泛型与数组列表

我在这里工作的系统是在 .net 2.0 之前编写的,没有泛型的好处。它最终更新到 2.0,但由于时间限制,没有任何代码被重构。在许多地方,代码使用 ArraysLists 等将事物存储为对象。

从性能的角度来看,更改代码对使用泛型有多重要?我知道从性能的角度来看,装箱和拆箱等,它是低效的,但是改变它真的会有多少性能提升呢?泛型是在前进的基础上使用的东西,还是有足够的性能变化需要良心努力来更新旧代码?