问题标签 [open-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 投票
4 回答
43001 浏览

c# - .NET 中的“开放泛型类型”到底是什么?

我正在学习Asp.Net MVC 课程并了解到,对于一个有资格作为控制器操作的方法,

  • 它不能有“开放的泛型”

我对泛型有所了解并在一定程度上使用它们,但是:

  • 什么是 .Net 中的开放泛型类型
  • 有没有封闭的泛型类型这样的东西?
  • 开放泛型类型是一个不经常使用的术语。什么是使用/混淆它?
0 投票
2 回答
188 浏览

structuremap - StructureMap 错误解决 Open Generic 依赖项

所以我已经像这样在 StructureMap 中连接了我的开放通用插件

但仍然得到可怕的

没有为 PluginFamily KharaSoft.Utils.IRepository`1 定义默认实例 [[KharaSoft.App.Core.DomainObject, KharaSoft.App.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]

我在容器初始化后进行调试,发现它确实注册了一个 RepositoryBase<> 的实例,所以它知道我想要做什么,但它不会为我关闭它。我在这里缺少什么吗?

0 投票
4 回答
3303 浏览

c# - 数组 [] 的开放泛型类型是什么?

当我这样做int[]时 , string[], T[]- 这是一个通用数组。数组只是一个对象,就像其他所有东西一样。

那么 [] 的实际开放泛型类型是什么?我认为这只是一些语法糖,Array<>但我找不到任何类似的东西。

如果您能在 Jon Skeet 之前以某种方式回答这个问题,则可以加分。

0 投票
1 回答
822 浏览

.net - 优先注册开放泛型

是否可以像这样使用统一:

..所以当我尝试解决时,IMyType<car>我得到了MyType1<car>……但是当我尝试解决时,IMyType<bus>我得到了MyType2<bus>?或者也许是另一种方法来做同样的事情,以便定义的泛型优先于开放的泛型?

0 投票
3 回答
8996 浏览

c# - 暴露非泛型版本的泛型接口的模式

假设我有以下用于公开分页列表的界面

现在我想创建一个分页控件

T分页控件对(列表的实际内容)没有兴趣。它只需要页数、当前页等。所以PagedListPager通用的唯一原因是它可以使用通用IPagedList<T>参数进行编译。

这是代码味道吗?我应该关心我实际上有一个冗余的泛型吗?

在这种情况下是否有标准模式可以公开接口的附加非泛型版本,以便我可以删除寻呼机上的泛型类型?


编辑

我想我还会添加我解决此问题的当前方式,并邀请评论它是否是一个合适的解决方案:

现在我可以传递ConcretePagedList<T>给非泛型类/函数

0 投票
1 回答
991 浏览

structuremap - 为使用 StructureMap 实现某些接口的所有类型注册开放的泛型类型

我想注册所有实现的类型IManager,以便它们可以用作T泛型Lazy<T>类的类型。

例如:

我使用自制扫描仪,因为我的具体类型和接口是内部的,因此我不能使用内置的 StructureMap 扫描机制。

在循环的第一条语句中注册我所有的IManager类型,比如For<IRadioManager>().Singleton().Use<RadioManager>()

同样,我希望它们被注册,以便它们可以用作类似的泛型Lazy<T>类型For<Lazy<IRadioManager>().Use<Lazy<RadioManger>>()

这可能吗?我需要如何为 StructureMap 配置它?

0 投票
1 回答
1293 浏览

c# - 如何为开放的泛型类型声明变量?可能的?

有没有办法为开放的泛型类型声明一个变量?

给定:用户从工厂方法中获得了一个通用类 Logger。有没有办法拥有一个可以容纳任何记录器的变量?

现在 Logger 继承自 Logger 只是为了能够为实例声明一个变量,而无需关心那里记录的是什么类型。

我使用 MEF,在导出中我可以使用类似 [Export(typeof(Logger<>))] 的语法来导出泛型类型...(在导入时指定确切的类型),因此对开放类型有一些支持(至少在 typeof 中)。我现在需要的是这样的语法

记录器<>记录器{获取;放; }

有可能做这样的事情吗?这种特殊的语法让我“需要类型”。

0 投票
2 回答
1886 浏览

c# - Autofac 装饰使用程序集扫描注册的开放泛型

我正在尝试将 autofac 装饰器支持功能应用于我的场景,但没有成功。就我而言,它似乎没有正确地将名称分配给注册。

有没有办法用名称注册扫描的程序集类型,以便我以后可以在打开的通用装饰器键中使用它?

或者也许我完全错了,在这里做了一些不恰当的事情?

0 投票
4 回答
34104 浏览

c# - 获取所有实现特定开放泛型类型的类型

如何获得实现特定开放泛型类型的所有类型?

例如:

查找所有实现IRepository<>.

0 投票
1 回答
8456 浏览

dependency-injection - What is the correct way to register FluentValidation with Simple Injector?

I am able to register FluentValidation AbstractValidators using a FluentValidatorFactory. However, it doesn't feel right, because not all of the IoC container registrations happen during bootstrap / composition root. Instead, the fluent validators are registered by a separate factory:

The composition root:

An abstract fluent validator factory depending only on IServiceProvider

A fluent validator factory implementation for SimpleInjector

SimpleInjector has good support for open generics, and all of my fluent validator classes have signatures similar to the following:

So, is there a better way to register the validators in the bootstrap / composition root, instead of using fluent's validator factory?

P.S. @DotNetJunkie -- would be great if you had a wiki page on this at simpleinjector.codeplex.com.