问题标签 [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 回答
2499 浏览

c# - SignalR 服务器 --> 客户端调用不起作用

我目前正在使用 SignalR 在服务器和服务器本身产生的多个单独进程之间进行通信。服务器和客户端都是用 C# 编码的。我正在使用 SignalR 2.2.0.0 在服务器端,我使用 OWIN 来运行服务器。我还使用 LightInject 作为 IoC 容器。

这是我的代码:

在客户端,我以这种方式注册:

在服务器端,我通过以下方式发送关闭请求:

我从来没有收到任何回调CloseRequestedCallback。在客户端和服务器端,我都没有在日志中收到任何错误。

我在这里做错了什么?

编辑 09/10/15

经过一番研究和修改,我发现它与更换 IoC 容器有关。当我删除与 LightInject 相关的所有内容并按原样使用 SignalR 时,一切正常。我对此感到惊讶,因为 LightInject记录了他们与 SignalR 的集成。

在我发现这个之后,我意识到这与GlobalHost.DependencyResolver我提供给HubConfiguration. 一旦我添加

我现在在CloseRequestedCallback. 不幸的是,一旦我从客户端调用方法到服务器,我就会收到以下错误:

Microsoft.AspNet.SignalR.Client.Infrastructure.SlowCallbackException

检测到可能的死锁。使用“HubProxy.On”或“Connection.Received”注册的回调已执行至少 10 秒。

我不确定我找到的修复程序以及它可能对系统产生什么影响。GlobalHost.DependencyResolver可以在不注册所有默认内容的情况下用我自己的替换吗?

编辑 2 09/10/15

据此改变GlobalHost.DependencyResolver是正确的做法。仍然没有解释,SlowCallbackException因为我在所有回调中都没有做任何事情(还)。

0 投票
1 回答
748 浏览

c# - 如何使用 LightInject 注入特定于类的记录器?

许多日志框架提供特定于类的记录器:

日志: Logger.GetLogger(typeof(MyClass).Name)

串行日志: Log.Logger.ForContext<MyClass>()

为了能够注入这些特定于类的记录器,可以在 Ninject 中执行以下操作:

wherecontext.Request.Target提供将接收注入的类型。

我找不到任何使用 LightInject 的方法来做同样的事情;(尚)不支持此功能吗?

0 投票
1 回答
268 浏览

nservicebus - 使用 DryIoc 或 LightInject 实现 NServiceBus/MassTransit IContainer

我在大多数 .Net Web API 2+ 解决方案中都使用过 DryIoc 和 LightInject。使用新架构,我更愿意在下一个 ESB 实现中使用 NServiceBus 或 MassTransit。但是,我找不到任何有用的代码参考可以帮助我使用 DryIoc 或 LightInject 实现 NServiceBus/MassTransit IContainer。其他 IoC 对我来说不是一个选择,因为我公司的要求是只能从上述两者中进行选择。非常感谢社区的任何帮助。

0 投票
2 回答
396 浏览

dependency-injection - 依赖注入 - 将 ninject di 转换为 lightinject di

如何将以下 Ninject DI 转换为 LightInject DI 的等效项?我在使用正确的语法时遇到问题。

在我最初的问题上,我没有包括这个,但是这个(也作为评论发布到这个帖子)是我试图让它工作的无效代码:

给出的错误消息(没有堆栈跟踪)是这样的:

异常详细信息:System.InvalidOperationException:未解决的依赖项 [目标类型:BrockAllen.MembershipReboot.Ef.DefaultUserAccountRepository]、[参数:ctx(BrockAllen.MembershipReboot.Ef.DefaultMembershipRebootDatabase)]、[请求的依赖项:ServiceType:BrockAllen.MembershipReboot.Ef.DefaultMembershipRebootDatabase , 服务名称:]

源错误:

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

*如果有人也想查看堆栈跟踪 - * 只要问,我会在回复这个问题时发布。

DefaultMembershipRebootDatabase 的构造函数(就像在示例项目中一样,我的项目使用了通过 nuget 提供的 dll,构造函数不可用,但我很确定它们在这两种情况下很可能相同(看看如何它来自同一个来源......)是:

这是 DefaultUserAccountRepository 的构造函数(与前面提到的同一个示例项目一样):

这是我项目中的控制器:

AuthenicationService 的构造函数是:

0 投票
0 回答
211 浏览

c# - 如何根据当前线程文化检索实例

设置:

LightinjectComposition.cs

IdentityLocator 检索同一个类的一个实例,它有两个方法:

  • Get():根据 Thread.CurrentThread.CurrentCulture 检索内部类的实例。
  • Get(CultureInfo):根据 CultureInfo 检索内部类的实例。

我有两个项目:一个用于 api(称为 Api),另一个用于 DI 容器配置(称为 Dependency,其中包含对其他项目的引用 - NHibernate 映射、服务等 - 并由 API 引用)。在名为 Dependency 的项目中,LightinjectComposition.cs 所在的位置。

问题是,在 NancyFX Bootstrapper 中,当前文化是根据请求中收到的值设置的,但在实例解决后线程的文化不会改变。

有没有办法使用当前文化检索实例,或者我做错了(关于 IoC 模式)?

在 NancyFX Bootstrapper 中,我将文化设置为:

也许我应该将 IdentityLocator 的实例传递给依赖类而不是 IIdentity?

谢谢阅读!

0 投票
2 回答
250 浏览

xamarin - Nuget 无法将 lightinject 4.0.6 添加到可移植类库

我正在尝试将 lightinject 用于 xamarin 应用程序。公共代码位于单独的可移植类库中。此项目配置为 TargetFrameWorkProfile Profile78。当我添加 lightinject 4.0.6 时出现以下错误:

我发现了这个问题,所以我尝试切换到 Profile111,但即使使用此配置文件,也无法将这个库添加到 PCL。

也许我错过了其他东西?

0 投票
0 回答
820 浏览

c# - ASP.NET MVC:没有使用 Lightinject 为该对象定义无参数构造函数

我已经开始使用LightInject,但No parameterless constructor defined for this object出现错误。代码如下,

全球.asax.cs:

控制器:

谁能帮我。

堆栈跟踪:

[MissingMethodException: 没有为此对象定义无参数构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +113
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +232 System.Activator.CreateInstance(Type type, Boolean nonPublic) +83 System.Activator.CreateInstance(Type type ) +66 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +110

[InvalidOperationException:尝试创建类型为“TestTools.Controllers.HomeController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。]
System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +247
System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +438
System. Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName) +226
System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& 控制器, IControllerFactory& factory) +326 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback 回调, 对象状态) +157
System.Web.Mvc.MvcHandler。 BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state) +88
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) +50
System.Web.CallHandlerExecutionStep.System.Web。 HttpApplication.IExecutionStep.Execute() +301 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

0 投票
2 回答
575 浏览

c# - 如何在 asp.net web-api 项目中使用 FluentValidation 和 LightInject

我正在尝试使用 IoC 容器将服务注入到 Validation 类中。请参见下面的示例:

在这一点上,我希望一切都会自动神奇地工作,并且 userService 将被注入到验证类中。相反,我收到一个异常,抱怨找不到无参数的构造函数。

经过一些研究后,我尝试创建一个 ValidationFactory,如链接的示例中所示。

并在 LightInject 配置中

这会导致异常:无法解析类型:FluentValidation.IValidator`1

我猜 IoC 容器不知道如何为验证器解析正确的实例。

任何想法都非常感谢。

0 投票
0 回答
344 浏览

c# - 如何使用 LightInject 为过滤器启用属性注入?

我有一个身份验证过滤器,我想将其与身份验证源一起注入。我正在使用光注入,并且我EnableAnnotatedPropertyInjection()在容器上启用[Inject]了过滤器的属性,以及他属性的类型RegisterInstance<IMyAuth>(),注册并被注入到我的解决方案中的其他控制器中。让 LightInject 在IAuthenticationFilter.

0 投票
1 回答
293 浏览

c# - LightInject - 派生接口导致多个实例

在我的应用程序中,我处理了许多通过多个接口在 LightInject 容器中注册的 ViewModel。出于单元测试的目的,其中一些接口是从其他接口派生的。

当使用相同的接口解析多个视图模型时,我得到比预期更多的视图模型实例。

我为这种行为做了一个简化的例子。是否有可能以某种方式防止这种行为?

}