- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道如何使用 LightInject 的 API 来注册给定类中定义的所有处理程序。在这种情况下,使用 LightInject 适配器为 Rebus 定义处理程序。
因此给定一个处理程序定义为:
public class MyHandler : IHandleMessages<MyMessage>
{
}
我以为我可以在程序集中注册如下:
container.RegisterAssembly(typeof(HandlerBase).Assembly,
(s, Type) => Type.GetInterfaces().Contains(typeof(IHandleMessages<>)));
但是当我尝试注册该类型的实例时,找不到它们(container.AvailableServices 显示类型但 value 属性为空)
var detectedHandlers = container.GetAllInstances<IHandleMessages<MyMessage>>();
有效的方法是按如下方式手动定义它:
container.Register<IHandleMessages<MyMessage>, MyHandler>();
但这并不理想,因为它需要手动注册。有没有办法用 LightInject 做到这一点?
最佳答案
您的注册将不起作用,因为非通用类型,例如 MyHandler
永远不要实现开放通用抽象,例如IHandleMessages<>
.相反,您应该检查是否 MyHandler
实现 IHandleMessages<>
的封闭版本:
container.RegisterAssembly(typeof(HandlerBase).Assembly,
(s, _) => s.IsGenericType && s.GetGenericTypeDefinition() == typeof(IHandleMessages<>));
请注意,之前的注册通过使用 s
进一步简化了注册。服务类型参数,使您不必调用 .GetInterfaces()
.
关于c# - 使用 LightInject 注册所有实现通用接口(interface)的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48780797/
我喜欢 benchmarks on LightInject ;他们疯了!干得好,你应该写一本关于 .Net 性能的书,我是认真的。 我看到 documentation . 我安装了dll。按照那个步骤
无论如何在 LightInject 中检测到递归依赖性问题。 我有两个相互依赖的业务服务,因此我收到了“检测到递归依赖性”错误。有人为此提出解决方法吗?我确信在 Structure Map 中是可行的
我(光注入(inject) mvc 的新手)在我的 asp.mvc 4 应用程序中使用 LightInject MVC,除了偶尔出现异常外,效果很好。现在我在预生产中看到它。异常是:System.In
在存储库中,我保留了一些实例,这些实例贯穿我的应用程序的整个生命周期,但有时我需要立即用另一个实例和 LightInject 替换此类实例,即使将新实例传递给容器。GetInstance 构造函数覆盖
我正在使用 LightInject 作为我的类库项目的 IoC 容器。由于这些项目类型没有任何入口点或启动方法,我可以在其中编写用于注册依赖项的代码。我想实现一些自动注册,所以任何使用我的库并依赖它的
我正在使用 fluentvalidation和 lightinject 这是我插入博客文章的代码; public OperationResultDto Add(BlogArticleDto blogA
我在 ASP MVC 项目中使用 LightInject。初始化代码与以下内容大致相同:http://www.lightinject.net/#mvc 我的问题是如何解析静态函数中的实例,例如 HTM
不确定在这里做什么。尝试拦截具有构造函数注入(inject)的工厂时,invocationInfo.Proceed() 总是失败。 var container = new ServiceContain
我想使用一些具有良好性能结果的 .NET IoC 容器。我读了this article关于 IoC 容器性能,DryIoc 和 LightInject 似乎是最好的。但是我没有找到关于它们的一些评论,
有谁知道如何使用 LightInject 配置 AutoMapper? AutoMapper 文档只有 Ninject 和 Simple Injector 的例子。 我在尝试注册 AutoMapper
在 LightInject 中,注册命名服务的过程如下: container.Register(); container.Register("AnotherFoo"); var instance =
我开始在我的 MVC 应用程序中使用 LightInject,但我对如何实现 DB Context 类的实例感到有点困惑。 我知道我可以通过构造函数注入(inject)它...但是如果我必须这样做,L
我是依赖注入(inject)的新手,我发现要开始使用 LightInject。所以我创建了 2 个接口(interface)并将这些接口(interface)实现为 2 个类。现在,我想获取 Paym
试用 LightInject IoC 容器时 http://www.lightinject.net/它在解析 ISomeService 类型时抛出一个 stackoverflow 异常: 所有类型都在
使用 LightInject,假设我有一个服务,我想用多个构造函数参数注册,例如: container.Register>( (factory, arg1, arg2, arg3) => ne
我不知道如何使用 LightInject 的 API 来注册给定类中定义的所有处理程序。在这种情况下,使用 LightInject 适配器为 Rebus 定义处理程序。 因此给定一个处理程序定义为:
我刚开始在我的 MVC 项目中使用 LightInject,它工作得很好。但我也想将它用于我的 SignalR 集线器。所以我按照 http://www.lightinject.net/#signal
我正在查看多个 IoC 包含以便选择一个用于我的工作,并查看 LightInject 的代码库我遇到了一些我不明白的东西...... 在 ServiceContainer 的 GetInstance(
我是这两个库的新手,在将它们用于大型项目之前,我需要澄清我的单元测试中低代码工作自动模拟的选项。 在谷歌上花了一些时间后,我得出的结论是,与其他一些 IOC/Mocking 产品配对不同,LightI
这对某些人来说可能是显而易见的,但是......有没有办法用 LightInject 解析未注册的类型?此外,在不显式注入(inject)可读性的情况下,使用 DI 框架自动神奇地解析对象是否是一种好
我是一名优秀的程序员,十分优秀!