- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我决定将我的 simpleinjector 版本升级到 3.0,突然我收到一条消息:
'SimpleInjector.Extensions.OpenGenericBatchRegistrationExtensions.RegisterManyForOpenGeneric(SimpleInjector.Container, System.Type, params System.Reflection.Assembly[])' is obsolete: 'This extension method has been removed. Please use Container.Register(Type, IEnumerable) instead.
文档中仍然有这个方法:
http://simpleinjector.readthedocs.org/en/latest/advanced.html
所以我很好奇,有什么替代方案:
container.RegisterManyForOpenGeneric(typeof(IEventHandler<>),
container.RegisterAll,
typeof(IEventHandler<>).Assembly);
最佳答案
啊..挠了我几个小时的脑袋,我想通了:
container.RegisterCollection(typeof(IEventHandler<>),
typeof(IEventHandler<>).Assembly);
RegisterCollection
也处理开放泛型。也许这应该记录在某处。
编辑:
我在新文档中意识到,上面的代码不是从 RegisterManyForOpenGeneric 直接翻译过来的。它所做的只是解决了我的编译,但它没有注册我的处理程序,我今天才检查过。
附加信息:类型没有注册
这是正确的版本:
container.Register(typeof(IEventHandler<>),
new[] { typeof(IEventHandler<>).Assembly });
使用 RegisterCollection 需要一些额外的代码更改(来自文档):
Because we register a collection, we can no longer call container.GetInstance>(). Instead instances can be retrieved by having an IEnumerable> constructor argument or by calling container.GetAllInstances>().
我没有做过,也不需要做,因为我没有混合开放通用和非通用。但如果我想改进我的项目,我会在未来对此进行更多探索。
关于c# - simpleinjector 3.0 不支持 RegisterManyForOpenGeneric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082996/
我正在对 ASP.NET Core Web-API 项目中的身份验证问题进行故障排除,我想看看在使用 SimpleInjector 作为我选择的方面是否缺少某些东西DI 框架。 OP 更新 这不是我最
我可以在运行时使用 SimpleInjector 为泛型类型注册初始值设定项吗? (见下面最后一行代码) public class BootStrapper { Type baseTypeGe
我正在尝试使用 SimpleInjector 注册一个实体,该实体依赖于从另一个注册实体检索到的值。例如: Settings - 读取指示应用所需的 SomeOtherService 类型的设置值。
我正在启动一个多项目解决方案,它将有多个入口点,例如 Windows 服务、ASP.NET 网站、WebApi Controller 等。我选择了 SimpleInjector,因为它非常快,但我不喜
所以 SimpleInjector 现在有一个包装 nuget,您可以使用它来隔离根组合的不同方面。 假设我在一个库中有一个可配置的组合根,它被应用程序中的多个项目重用。例如,在 Azure 解决方案
作为创建我的 SimpleInjector 容器的一部分,我遵循了推荐的做法并调用了 container.Verify()检查我的类型注册是否有意义。 这工作得很好,并且已经发现了我犯的一些错误 -
我在使用 simpleInjector 时遇到了一个奇怪的行为。 以下代码说明了我的场景: class A: IA, IB{} 然后,我正在为每个接口(interface)实例注册一次,如下所示: f
我在使用 simpleInjector 时遇到了一个奇怪的行为。 以下代码说明了我的场景: class A: IA, IB{} 然后,我正在为每个接口(interface)实例注册一次,如下所示: f
如何在 SimpleInjector 中注册一个条件装饰器?这是我的定义: public interface ICommand { } public interface ICleanableComma
我有一个这样的查询处理程序: public class FooQueryHandler : IQueryHandler { public FooResult Handle(FooQuery
在SimpleInjector documentation据说: Simple Injector preserves the lifestyle of instances that are retur
我有以下命令处理程序接口(interface): public interface ICommandHandler where TCommand : ICommand { void Handl
如何使用 Simple Injector DI 容器注册多个具体类型的 ISipper 接口(interface)并使用 name 动态选择它们? 如果我无法注册同一类型的多个实例,是否有不同的方法来
我正在尝试自动化我的 View 模型的验证,我知道我可以只添加一个属性来指定我的验证但是有一个选项可以设置一个工厂来自动化所有这些,我查看了:this answer并使用简单的注入(inject)器
我们将从一个独立的故事开始,只是为了让您了解原因:我想针对同一界面处理任何更改数据的操作:ICommand那里存在称为 ICommandHandlers 的东西,可以处理我想要的任何命令。所以,如果我
我正在尝试开始使用 SimpleInjector 作为 IOC 容器,到目前为止我对它非常满意。但现在我陷入了一个我无法解决的问题。我在 SO 和文档中进行了搜索,但似乎还没有得到解答。我看过the
我一直遇到一些奇怪的代码问题,最后似乎注意到应该充当单例的东西实际上并不是单例。这是一个缓存类,所以我最终拥有同一缓存的多个版本。我已经按照下面编写了一些测试代码,在我看来这应该可行。我做错了什么,还
跟进 an older question这里。假设我有如下注册: container.Register(typeof(IHandleCommand<>), _handlerAssemblies, Li
我一直在使用 MediatR 试验中介模式和 CQRS WinForms 应用程序中使用 Entity Framework 进行数据访问的库。该应用程序用于批处理制造工厂,允许用户查看事件批处理和已完
我是 SimpleInjector 的新手,正在研究将其与 WebAPI 结合使用的示例。我用了 SimpleInjector.Integration.WebApi.WebHost.QuickStar
我是一名优秀的程序员,十分优秀!