问题标签 [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.
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
因为我在所有回调中都没有做任何事情(还)。
c# - 如何使用 LightInject 注入特定于类的记录器?
许多日志框架提供特定于类的记录器:
日志: Logger.GetLogger(typeof(MyClass).Name)
串行日志: Log.Logger.ForContext<MyClass>()
为了能够注入这些特定于类的记录器,可以在 Ninject 中执行以下操作:
wherecontext.Request.Target
提供将接收注入的类型。
我找不到任何使用 LightInject 的方法来做同样的事情;(尚)不支持此功能吗?
nservicebus - 使用 DryIoc 或 LightInject 实现 NServiceBus/MassTransit IContainer
我在大多数 .Net Web API 2+ 解决方案中都使用过 DryIoc 和 LightInject。使用新架构,我更愿意在下一个 ESB 实现中使用 NServiceBus 或 MassTransit。但是,我找不到任何有用的代码参考可以帮助我使用 DryIoc 或 LightInject 实现 NServiceBus/MassTransit IContainer。其他 IoC 对我来说不是一个选择,因为我公司的要求是只能从上述两者中进行选择。非常感谢社区的任何帮助。
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 的构造函数是:
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?
谢谢阅读!
xamarin - Nuget 无法将 lightinject 4.0.6 添加到可移植类库
我正在尝试将 lightinject 用于 xamarin 应用程序。公共代码位于单独的可移植类库中。此项目配置为 TargetFrameWorkProfile Profile78。当我添加 lightinject 4.0.6 时出现以下错误:
我发现了这个问题,所以我尝试切换到 Profile111,但即使使用此配置文件,也无法将这个库添加到 PCL。
也许我错过了其他东西?
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
c# - 如何在 asp.net web-api 项目中使用 FluentValidation 和 LightInject
我正在尝试使用 IoC 容器将服务注入到 Validation 类中。请参见下面的示例:
在这一点上,我希望一切都会自动神奇地工作,并且 userService 将被注入到验证类中。相反,我收到一个异常,抱怨找不到无参数的构造函数。
经过一些研究后,我尝试创建一个 ValidationFactory,如链接的示例中所示。
并在 LightInject 配置中
这会导致异常:无法解析类型:FluentValidation.IValidator`1
我猜 IoC 容器不知道如何为验证器解析正确的实例。
任何想法都非常感谢。
c# - 如何使用 LightInject 为过滤器启用属性注入?
我有一个身份验证过滤器,我想将其与身份验证源一起注入。我正在使用光注入,并且我EnableAnnotatedPropertyInjection()
在容器上启用[Inject]
了过滤器的属性,以及他属性的类型RegisterInstance<IMyAuth>()
,注册并被注入到我的解决方案中的其他控制器中。让 LightInject 在IAuthenticationFilter
.
c# - LightInject - 派生接口导致多个实例
在我的应用程序中,我处理了许多通过多个接口在 LightInject 容器中注册的 ViewModel。出于单元测试的目的,其中一些接口是从其他接口派生的。
当使用相同的接口解析多个视图模型时,我得到比预期更多的视图模型实例。
我为这种行为做了一个简化的例子。是否有可能以某种方式防止这种行为?
}