问题标签 [light-inject]

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 投票
1 回答
394 浏览

c# - 使用 LightInject 访问 Container 实例

使用 LightInject 时,如何在初始注册/引导之外的上下文中访问容器实例?我按照 LightInject 的入门指南 和谷歌搜索,但没有找到类似的东西。

作为参考,我介绍了如何在其他两个 IoC 框架中实现这一点。

忍者

使用 Ninject 时,我习惯于将 IKernel 类型自动绑定到内核(LighInject 上的容器),因此具有如下构造函数的类:

将能够使用内核来检索实例。

简单IOC

在使用 MvvmLight 自带的框架 SimpleIoC 时,可以使用静态属性(SimpleIoC.Default)来达到同样的目的:

0 投票
1 回答
432 浏览

light-inject - LightInject - 如何将多个接口注册到单个服务?

如何注册实现 4 个接口的服务?

例如:class Foo : IFoo, IBar, IApp, ISee { ... }

我希望有这样的事情: container.Register<IFoo, IBar, IApp, ISee, Foo>();

但似乎这个签名是为了将各种类型传递给工厂,在这种情况下,工厂需要 4 个参数。

0 投票
1 回答
666 浏览

c# - 使用 LightInject,如何使用工厂方法注册通用服务?

我想配置一个记录到 xUnit 测试输出的记录器,并且应该替换所有ILogger<T>依赖项。据我所知,解决这个问题的方法是使用带有工厂方法的通用服务。

使用时Microsoft.Extensions.DependencyInjection,我可以执行以下操作:

如何使用 LightInject 实现相同的效果?

编辑:我的示例不起作用,因为创建的记录器无法转换为ILogger<T>. 相反,我在下面发布了我的解决方法作为解决方案。

0 投票
1 回答
269 浏览

c# - 使用 lightinject 拦截在 mvc 5 中使用参数拦截动作控制器

我无法拦截带有参数的控制器操作。我正在使用带有 LightInject 和 LightInject.Interception 的 Asp.Net MVC 5。我收到以下错误:

无法将“System.Object[]”类型的对象转换为“System.Web.Mvc.CustomModelBinderAttribute[]”类型。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidCastException:无法将“System.Object[]”类型的对象转换为“System.Web.Mvc.CustomModelBinderAttribute[]”类型。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

我的代码是(我不插入视图,因为没有意义):

我的控制器是:

希望有人可以指导我正确的方式。

0 投票
0 回答
442 浏览

c# - LightInject 用参数注册泛型?

我有接口 IRepository 和 Class Repository 以及实现 IRepository 的参数构造函数。类和接口都是通用的。我想在注册时传递这个参数。代码如下:

我做了这样的通用类注册

我在注册时找不到传递参数的方法。

0 投票
1 回答
513 浏览

automapper - 使用 LightInject 配置 AutoMapper

有谁知道如何使用 LightInject 配置 AutoMapper?AutoMapper 文档只有 Ninject 和 Simple Injector 的示例。

我在尝试注册 AutoMapper 配置时遇到了困难。

我正在使用 ASP.NET MVC C#。

0 投票
1 回答
968 浏览

asp.net-core - 使用 lightinject 的 aspnet 核心中未解决的 DI

为长文道歉!

我正在尝试在 aspnet core 2.1 中为 RabbitMQ 构建一个消息侦听器。我一发布消息,就会在日志中收到此错误:

2018-09-29 12:35:35.459 INFO NServiceBus.RecoverabilityExecutor Immediate Retry 将重试消息“ab43”,因为出现异常:

System.InvalidOperationException:无法解析类型:Event.Processor.Listener.CustomerReceivedHandler,服务名称:---> System.InvalidOperationException:未解析的依赖项

csproj:

启动.cs

程序.cs

消息处理程序.cs

0 投票
1 回答
429 浏览

light-inject - 使用 LightInject,如何在不注册一堆工厂的情况下将参数传递给子依赖项?

在下面的代码中,我试图将 ViewModel 注入到 View 中,而 ViewModel 需要一个模型来包装和容器中的另一个服务。该模型未注册,因为它不是真正的“服务”。

我如何能:

a) 不必提供 IService 实例作为参数(让容器解决它),

b)不必为我的 ViewModels 注册工厂(会有很多

所以我真正要求容器做的是在调用 GetInstance 期间将我的模型(我作为参数传递)视为注册的“服务”。

如果 LightInject 无法做到这一点,那么是否有任何容器具有类似的东西?

0 投票
0 回答
123 浏览

c# - 使用 LightInject 时在 LoadApplication 中投射异常

我是 Xamarin Forms 和 LightInject 的新手。

我得到一个例外:

System.InvalidCastException:指定的强制转换无效。

当调用 LoadApplication(new App()); 在 MainActivity.cs

当将实例调用为 NavigationPage 时,会发生这种情况。我试过 MainPage = instance了,效果很好。但我需要将实例作为 NavigationPage 发送

你知道为什么会这样吗?

这是堆栈跟踪

这是堆栈跟踪


这是异常详细信息

12-30 09:26:37.554 I/mono-stdout(18434): System.InvalidCastException: 指定的强制转换无效。System.InvalidCastException:指定的强制转换无效。12-30 09:26:37.558 I/mono-stdout(18434): 在 Xamarin.Forms.Internals.ToolbarTracker.RegisterChildPage (Xamarin.Forms.Page 页面) [0x0001c] 在 <3a9c335d80a748a29a8f8588acbed83f>:0 在 Xamarin.Forms.Internals .ToolbarTracker.RegisterChildPage(Xamarin.Forms.Page 页面)[0x0001c] in <3a9c335d80a748a29a8f8588acbed83f>:0 在 Xamarin.Forms.Internals.EnumerableExtensions.ForEach[T](System.Collections.Generic.IEnumerable 1[T] enumeration, System.Action1[T] 操作)[0x00010 ] 在 <3a9c335d80a748a29a8f8588acbed83f>:0 12-30 09:26:37.560 I/mono-stdout(18434): 在 Xamarin.Forms.Internals.EnumerableExtensions.ForEach[T] (System.Collections.Generic.IEnumerable1[T] enumeration, System.Action1 [T] 操作)[0x00010] 在 <3a9c335d80a748a29a8f8588acbed83f>:0 12-30 09:26:37.561 I/mono-stdout(18434):在 Xamarin.Forms.Internals.ToolbarTracker.TrackTarget(Xamarin.Forms.Page 页面) [0x00041] 在 <3a9c335d80a748a29a8f8588acbed83f> 中:0 在 Xamarin.Forms.Internals.ToolbarTracker.TrackTarget(Xamarin.Forms.Page 页面) [0x00041] 在 <3a9c335d80a748a29a8f8588acbed83f> 中:0 在 Xamarin.Forms.Internals.ToolbarTracker.TrackTarget .Page 值)[0x00025] in <3a9c335d80a748a29a8f8588acbed83f>:0 12-30 09:26:37.563 I/mono-stdout(18434):在 Xamarin.Forms.Internals.ToolbarTracker.set_Target(Xamarin.Forms.Page 值)[0x00025 ] 在 <3a9c335d80a748a29a8f8588acbed83f>:0 在 Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs1[TElement] e) [0x000fe] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.565 I/mono-stdout(18434): at Xamarin.Forms.Platform.Android.AppCompat.NavigationPageRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs1[TElement] e) [0x000fe] in <02db0bcb95874f4db06b80f38eac4adf>:0 at FormsControls.Droid.AppCompatAnimationNavRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs 1[TElement] e) [0x00000] in <9cf8e9b117d44fb7a184e024868cb7a5>:0 12-30 09:26:37.567 I/mono-stdout(18434): at FormsControls.Droid.AppCompatAnimationNavRenderer.OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs1[TElement] e) [0x00000] in <9cf8e9b117d44fb7a184e024868cb7a5>:0 at Xamarin .Forms.Platform.Android.VisualElementRenderer 1[TElement].SetElement (TElement element) [0x000dd] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.569 I/mono-stdout(18434): at Xamarin.Forms.Platform.Android.VisualElementRenderer1[TElement].SetElement (TElement element) [0x000dd] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.571 I/mono-stdout(18434): 在 Xamarin.Forms.Platform .Android.VisualElementRenderer1[TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement element) [0x00027] in <02db0bcb95874f4db06b80f38eac4adf>:0 at Xamarin.Forms.Platform.Android.VisualElementRenderer1 [TElement].Xamarin.Forms.Platform.Android.IVisualElementRenderer.SetElement (Xamarin.Forms.VisualElement 元素) [0x00027] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.573 I/mono-stdout(18434):在 Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin.Forms.VisualElement 元素,Android.Content.Context 上下文)[0x0001f] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 在 Xamarin.Forms.Platform.Android.Platform.CreateRenderer (Xamarin .Forms.VisualElement 元素,Android.Content.Context 上下文)[0x0001f] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.575 I/mono-stdout(18434):在 Xamarin.Forms.Platform.Android.AppCompat。 Platform.AddChild(Xamarin.Forms.Page 页面,System.Boolean 布局)[0x00009] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 在 Xamarin.Forms.Platform.Android.AppCompat.Platform。AddChild(Xamarin.Forms.Page 页面,System.Boolean 布局)[0x00009] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.576 I/mono-stdout(18434):在 Xamarin.Forms.Platform.Android.AppCompat .Platform.SetPageInternal (Xamarin.Forms.Page newRoot) [0x00096] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 在 Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPageInternal (Xamarin.Forms.Page newRoot) [0x00096] 在 <02db0680fbadf>fddb0680fbadf4 :0 在 Xamarin.Forms.Platform.Android.AppCompat.Platform.SetPage (Xamarin.Forms.Page newRoot) [0x00087] in <02db0bcb95874f4db06b80f38eac4adf>:0 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.页页)[0x00052] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.578 I/mono-stdout(18434):在 Xamarin.Forms.Platform.Android。AppCompat.Platform.SetPage (Xamarin.Forms.Page newRoot) [0x00087] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.580 I/mono-stdout(18434): 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity。 InternalSetPage (Xamarin.Forms.Page 页面) [0x00052] 在 <02db0bcb95874f4db06b80f38eac4adf>:0 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x0000c] 在 <02db0bcb95874f4db06b80f38eac4adf>:6:0-37.2 /mono-stdout(18434): 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x0000c] in <02db0bcb95874f4db06b80f38eac4adf>:0 在 Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication (Xamarin.Forms.Application 应用程序) [0x0026f] in <02db0bcb95874f4db06b80f38eac4adf>:0 12-30 09:26:37.583 I/mono-stdout(18434): 在 Xamarin.Forms.Platform。Android.FormsAppCompatActivity.LoadApplication (Xamarin.Forms.Application 应用程序) [0x0026f] in <02db0bcb95874f4db06b80f38eac4adf>:0 在 DipsDemoXaml.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x0002f] 在 C:\Users\madura.d \source\repos\DipsDemoXaml\DipsDemoXaml\DipsDemoXaml.Android\MainActivity.cs:22 12-30 09:26:37.585 I/mono-stdout(18434): 在 DipsDemoXaml.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle ) [0x0002f] 在 C:\Users\madura.d\source\repos\DipsDemoXaml\DipsDemoXaml\DipsDemoXaml.Android\MainActivity.cs:22Android\MainActivity.cs:22 12-30 09:26:37.585 I/mono-stdout(18434): 在 DipsDemoXaml.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x0002f] 在 C:\Users\madura .d\source\repos\DipsDemoXaml\DipsDemoXaml\DipsDemoXaml.Android\MainActivity.cs:22Android\MainActivity.cs:22 12-30 09:26:37.585 I/mono-stdout(18434): 在 DipsDemoXaml.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x0002f] 在 C:\Users\madura .d\source\repos\DipsDemoXaml\DipsDemoXaml\DipsDemoXaml.Android\MainActivity.cs:22

0 投票
0 回答
161 浏览

light-inject - InvalidOperationException:尝试在没有当前范围的情况下创建一次性实例 - 使用 .NET Core 3.0 的 LightInject

我一直在为新的 .NET Core 3.0 项目使用 LightInject 设置 DI。我在这里遵循了指南:https ://www.lightinject.net/microsoft.aspnetcore.hosting/ 。在运行项目时,我遇到了这个错误:

System.InvalidOperationException:尝试创建没有当前范围的一次性实例。在 LightInject.PerRequestLifeTime.TrackInstance(Scope scope, IDisposable 一次性) 在 LightInject.PerRequestLifeTime.GetInstance(Func`1 createInstance, Scope scope) 在 LightInject.ServiceContainer.TryGetInstance(Type serviceType) 在 LightInject.Microsoft.DependencyInjection.LightInjectServiceProvider.GetService(Type serviceType) 在 Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) 在 Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) 在 Microsoft.AspNetCore.Routing.Matching.DfaMatcherFactory.CreateMatcher(EndpointDataSource数据源)在 Microsoft.AspNetCore.Routing。

有没有人遇到同样的问题并找到了解决方法?