问题标签 [tinyioc]
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.
nancy - 如果注册为多个注册类型,RegisterMultiple 不会将实现类型保持为单例?
我正在尝试添加一个名为TypeA的类型作为两种不同的注册类型:InterfaceA和InterfaceB。
但是当我解决它们时,我在解析 InterfaceA 时得到一个 TypeA 实例,在解析InterfaceB 时得到另一个实例。我希望两个解析都得到相同的实例,但我不是。
我也尝试将.AsSingleton()添加到通话中,但这没有任何区别。
我做错了什么,或者有没有人有任何想法这样做而不添加TypeAFactory或这样来跟踪实例?
提前感谢您的帮助。
c# - 在运行时配置 NancyFx 依赖注入
我正在做一个涉及本地网络的小型自托管 Nancy 服务器来远程控制媒体播放器的副项目。为了支持多个播放器,我实现了一个简单的插件机制,如下所示:http: //code.msdn.microsoft.com/windowsdesktop/Creating-a-simple-plugin-b6174b62
动态加载和执行效果很好,但我遇到的问题是如何告诉 TinyIoC 使用哪个插件实现。目前,我有一个名为 plugins 的子目录,其中存储了 .dll,并且在启动时 TinyIoC 会在此目录中发现一个测试 dll 并连接依赖项,而无需我明确选择任何内容。
我发现 Bootstrapper.ConfigureApplicationContainer 方法是进行 DI 配置的地方,但由于我想使用动态系统并且没有服务器项目对所有插件程序集的引用,这在我的情况下是不够的。
TinyIoC 甚至可以做到这一点,还是我需要寻找另一个 IoC 容器?
非常感谢提前
c# - 开始(Tiny)IOC:在解决方案中跨多个项目进行引导
作为学习 IoC 概念的一部分,我正在探索 TinyIOC。我已经掌握了基础知识,但我想知道,当解决方案中有多个项目时,我是否可以为他们自己的项目中的相关类进行引导(将 ioc 容器传递给每个单独项目中的 boostrapper 类)。
目前我有一个用于测试的控制台应用程序。它包含以下引导程序,它注册解决方案中其他两个项目的所有相关类:
有没有可能做这样的事情:
这种方法 a) 在应用 IoC 时一般有效吗? b) 在 TinyIOC 上是否可行。到目前为止,我还没有让它像这样运行......
谢谢!
c# - 带有 BuildUp 的 TinyIoC 属性注入在 Xamarin.iOS 应用程序中不起作用
我很难弄清楚为什么我不能在 Xamarin iOS 应用程序的 ViewController 中进行属性注入。
我的类型已注册,并使用以下代码在我的 ViewController 构造函数中正确解析:
但我相信我应该能够让 TinyIoC “填充”我的 ViewController 的公共属性,而不是手动分配所有的 deps:
在我的 ViewController 的构造函数中,但是一旦我尝试运行这行代码,即使没有在我的 ViewController 上指定任何公共属性 - 我也会收到一个 stackoverflow 异常和很多错误。
谁能告诉我我在这里可能做错了什么?
c# - 使用 Nancy TinyIoC 配置 JsonNetSerializer 和 JsonNetBodyDeserializer
我是南希的菜鸟。我一直将它用作生成 REST API 的框架。我熟悉 Json.NET,所以我一直在玩这个Nancy.Serialization.JsonNet
包。
JsonNetSerializer
我的目标:自定义and的行为(即更改设置)JsonNetBodyDeserializer
。
具体来说,我想合并以下设置...
我想使用内置的 TinyIoC 容器来执行此自定义,以避免继承链并限制由Nancy.Serialization.JsonNet
包中的任何更改引起的潜在问题。
注意:作为一种临时解决方法,我利用继承来创建CustomJsonNetSerializer
和CustomJsonNetBodyDeserializer
.
我已经尝试了几种方法来合并这种配置,至少对于JsonNetSerializer
. 我还没有尝试JsonNetBodyDeserializer
使用 TinyIoC 进行配置。我想它会以类似的方式完成。我尝试过的所有工作都在我的CustomNancyBootstrapper
(继承自DefaultNancyBootstrapper
)中。
迄今为止最成功的方法:覆盖ConfigureApplicationContainer
我已经跟踪了代码并观察JsonNetSerializer(JsonSerializer serializer)
了 JsonNet 包中的构造函数。
潜在问题:我注意到构造函数被调用了两次。我没想到会有这种行为。
第一次一切都恰到好处 - 我的自定义已正确添加和注册。但是,第二次发生并且类型被重新注册,没有设置自定义。重新注册似乎取代了失去我的设置自定义的原始注册。
第二次调用构造函数时的调用堆栈显示它在期间被调用,GetEngine
并且GetEngineInternal
似乎试图构建一个NancyEngine
(我正在使用自托管包,所以这发生在 program.cs -- using(var host = new NancyHost(uri))
)。
似乎我要么需要告诉南希不要做某事,要么我需要加入链条的后面部分。
任何帮助,将不胜感激。
c# - 为 TinyIoC 创建一个 MVC 控制器工厂,考虑构造函数的争论
我一直在玩几个 DI 容器,我喜欢 TinyIoC。我是通过 Nancy/fx 第一次被介绍给它的。
我正在尝试在当前的 MVC 项目中使用它,但似乎无法让它实例化包含构造函数中的接口参数的控制器。
据我了解,它应该是直截了当的。它甚至带有一个 AutoRegister 方法来处理基本注册。我已经实现了 IControllerFactory,它允许我覆盖 MVC 的 DefaultControllerFactory,它只是实例化控制器,顺便说一句,它不执行和 DI。
我还实现了 IDependancyResolver 来利用 TinyIoC。但是实例化控制器不起作用。你有我可以看到的示例代码来说明如何使用它来使用 TinyIoC 实例化控制器吗?
这是我到目前为止所拥有的。
控制器工厂代码
依赖解析器代码
注册码
我是否需要使用 UsingConstructor() 方法来强制实例化?如果是这样,我该如何使用它?
这是没有构造函数参数的 Home 控制器的错误快照。
带有参数的控制器的错误消息也是相同的。最终结果是没有控制器被实例化。
谢谢蒂姆
asp.net-mvc - 如何使用 TinyIoC 注入 IPrincipal?
这一行:
抛出以下异常:
无法注册类型 System.Security.Principal.IPrincipal - 抽象类或接口不是 SingletonFactory 的有效实现类型。
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:Tss.Rhnncp.DietPlanner.Bootstap.TinyIoCRegistrationTypeException:无法注册类型 System.Security.Principal.IPrincipal - 抽象类或接口不是 SingletonFactory 的有效实现类型。
源错误:
asp.net-mvc-5 - MVC5 上的 ReactJS.Net 无法解决依赖关系
我正在尝试设置一个 ASP.Net MV5 应用程序以与ReactJS.Net一起使用,包括服务器端渲染和捆绑。
不幸的是,它因以下异常而失败:
React.dll 中出现“React.TinyIoC.TinyIoCResolutionException”类型的异常,但未在用户代码中处理
附加信息:无法解析类型:React.ReactEnvironment
此异常发生在此行:
这条线是我的_layouts.cshtml
文件。
我应该如何解决我的问题?
为了详细说明,这里我做了什么:
在 BundleConfig.cs 中:
我用我所有的 jsx 文件创建了一个文件夹“Content/ui/components”(实际上只有一个来自教程的“commentsbox.jsx”文件。
在 ReactConfig.cs 中,我删除了该
/li>WebActivatorEx.PreApplicationStartMethod
属性,因为 MVC5 不再支持该属性,这得益于 Owin 组件。它仍然包含:在我的
/li>Global.asax.cs
文件中,我显式调用ReactConfig.Configure
方法来替换WebActivatorEx.PreApplicationStartMethod
钩子:我的
/li>_layouts.cshtml
视图包含(在文件的底部):在我看来:
/li>最后,我的 jsx 文件:
/li>
c# - NancyFX 中的 C# IOC 和请求状态
我想使用 NancyFX 中的 IOC 框架将一个类注入到我的模块中,并且我希望该类能够访问上下文,就像模块一样。
我该怎么做?
该模块有一个名为 Context 的属性,它似乎没有被注入(也不应该被注入,因为它是请求状态)......它是如何工作的,那个线程安全吗?
谢谢
c# - NancyFx 配置请求容器
我想弄清楚 NancyFx 请求容器是如何工作的,所以我创建了一个小测试项目。
我创建了一个这个界面
有了这个实现
然后在引导程序中我像这样注册它
我在一个除了将请求 url 作为字符串返回之外什么都不做的类中使用这个上下文包装器。
最后在模块中使用它
当我这样做时,请求始终为空。现在我或多或少可以弄清楚,由于IUrlString
没有在请求容器配置中配置,因此 TinyIocINancyContextWrapper
在发出任何请求之前在应用程序启动时解析,并且 TinyIoc 不会重新注册依赖关系图依赖于在请求容器配置。
我的问题是使用 ConfigureRequestContainer 的最佳做法是什么?我是否必须在请求容器配置中注册以任何方式显式依赖 NancyContext 的所有内容?这很快就会变得臃肿且难以维护。我喜欢 TinyIoc 进行程序集扫描的方式,所以不得不这样做有点受挫。