问题标签 [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.
c# - TinyIoC 的构造函数注入
我刚刚从 Ninject 更改为 TinyIoC 进行依赖注入,但在构造函数注入时遇到了问题。
我设法将其简化为以下代码段:
这会导致 TinyIoCResolutionException 被抛出:
并且在该异常内部是一连串内部异常:
我使用构造函数注入的方式有问题吗?我意识到我可以打电话
这确实有效,但是结果是 Bar 的全局实例,这不是我所追求的。
有任何想法吗?
nancy - 在 TinyIOC 中注册依赖项以在 NancyFX 中使用
我有另一个关于在 TinyIoc 中注册其他依赖项以在 NancyFX 中使用的新手问题。
运行应用程序时,我继续收到以下异常...
我目前正在错误地注册我的依赖项,但我似乎无法找出正确的方法。下面是我的自定义引导程序中的代码。另请注意,我目前没有调用 base.ConfigureRequestContainer 方法,因为我似乎无法弄清楚如何将当前上下文传递给它。
任何帮助将不胜感激......显然我的无知没有限制:)
c# - TinyIoC - Multiple Implementations of Interface
I am just beginning to learn about IoC and Dependency Injection. I am planning on doing a MonoTouch project and wanted to use TinyIoC but I wanted to test it out first. I'm creating a dummy credit card processing console app and I'm having trouble with how to configure TinyIoC since I have multiple implementations of my interface. This is my test app.
Interface:
Two Implementations of the interface:
VisaPaymentProcessor
AmexPaymentProcessor
Simple stuff. Now I have a class that accepts the interface as a parameter in the constructor....
CreditCardProcessor
My console app looks like this....
So I am trying to figure out how to tell the Resolve
which implementation of the interface to pass to the constructor. If I run this code, I will always use the VisaPaymentProcessor
implementation.
So how can I make TinyIoC pass the AmexPaymentProcessor
implementation to the constructor rather than the VisaPaymentProcessor
(which seems to be the default)?
c# - TinyIoc - 如何配置所有接口注册 AsPerRequestSingleton?
以上是我现有的应用程序启动,其中包含我的 TinyIoc 配置。有没有办法把所有的接口注册都变成 PerRequestSingleton?我不能“一个一个”地做它们,因为我有太多的存储库,而且我不能把它们作为单例,因为它不适用于 NHibernate 的设置方式。
.net - TinyIoC:在单个实例上注册多个接口
Autofac 允许使用 .AsImplementedInterfaces() 或链式 .As<>() 调用与 .SingleInstance() 一起非常轻松地将多个接口解析为同一个实例。这也可以用 TinyIoC 完成吗?我只找到了如何注册同一接口的多个实现,但没有办法链接注册等。
据我了解,这对于 IoC 容器来说是一个非常重要的特性,不是吗?
xamarin.android - TinyIoC 和发布版本
我正在做我的第一个发布版本,并且在使用 TinyIoC 和解决通过 TinyIoC 使用的接口时遇到问题。
我们得到的架构是:
Universal.Mobile.Droid.application - 主应用程序
Universal.Mobile.Droid.Interfaces - 包含 IUniversalMobileDroidDAO 的定义
Universal.Mobile.Droid.DAO.UltraliteDAO - 包含 IUniversalMobileDroidDAO 的实现
当我在我的设备上进行发布构建和部署/运行时,出现错误:
我需要调整我的构建/链接器/清单来解决这个问题吗?
问候,
詹姆士
c# - 使用 IoC 的 WPF 设计器加载失败
我有一个相当简单和标准的 MVVM WPF 应用程序。我使用 TinyIoC 作为容器来为 ViewModel 提供底层数据和缓存提供程序。我正在使用 TinyIoC,因为我还想与 MonoTouch 和 Monodroid 项目共享此代码。
当添加到 MainWindow 的 XAML 时,每个 ViewModel 不依赖于解析来自 TinyIoC 的数据提供程序的用户控件都可以正常工作。
ViewModel 的用户控件正在使用 TinyIoC 来解析用于获取其数据的数据提供者,当添加到 MainWindow 时,无法在设计器视图中实例化。
重要提示:当我运行应用程序时一切正常,只是设计师坏了 - 一个很大的障碍。
这是基本代码:
View / ViewModel / XAML 绑定标准实现 - 这里没有问题。
在数据层的深处,IoC 容器用于解析使用哪个提供者——上面代码中设置的那个。
这是我从设计师那里得到的确切错误。
无法解析类型:TinyIoC.TinyIoCContainer.ResolveInternal 中的 Sample.Core.Data.IDataStoreProvider(TypeRegistration 注册,NamedParameterOverloads 参数,ResolveOptions 选项)在 C:_dev\Sample\SampleSolution\Sample.Core\Utility\TinyIoC.cs:line 3281 at TinyIoC.TinyIoCContainer.Resolve(Type resolveType) in C:_dev\Sample\SampleSolution\Sample.Core\Utility\TinyIoC.cs: 第 1314 行 TinyIoC.TinyIoCContainer.ResolveResolveType in C:_dev\Sample\SampleSolution\Sample.Core\Utility \TinyIoC.cs:C:_dev\Sample\SampleSolution\Sample.Core\Data\Gateway.cs 中 Sample.Core.Data.Gateway..cctor() 的第 1433 行:第 14 行
我想我明白为什么会出现此错误 - 在设计器加载并执行 MainWindow 内的用户控件之前,不会触发 App 启动事件以加载 IoC。
再次需要注意的是,该应用程序运行良好 - IoC 和一切。我想通过以下任一方式(按优先顺序)停止设计器加载错误:
- 了解如何修复代码以与设计人员一起正常工作
- 为设计人员使用模拟数据存根现有的控制数据
- 禁用此设计器功能
ravendb - 解决构造函数对 NancyFX 中使用的服务的依赖
我有以下引导程序
当我的 Nancy 应用程序尝试使用以下构造函数实例化 BlogService 时
应用程序爆炸说它无法解析文档会话,我还在我的测试方法中尝试了以下操作(删除构造函数注入)。
这也炸了,指出它无法解析documentSession。
现在这是我第一次使用 NancyFX 或 TinyIoC,所以我可能会做一些根本错误的事情,尽管我应该提到 documentSession 确实在 Nancy 模块中解析..
任何人都可以提供修复或一些建议吗?
c# - 在 TinyIoC 中注入命名注册
我有一个带有以下构造函数签名IRofl
的实现的接口:DefaultRofl
ICanHasCheezburger
有几个实现,其中我需要通过 IoC 容器解决多个,我认为命名注册是正确的方法。
假设我有两个预先创建的实例,希望一个作为默认注册,另一个命名为:
现在我需要指定 for DefaultRofl
,应该解决“x2”注册 - 这就是我卡住的地方。我知道 Autofac 可以做到这一点,但我找不到 TinyIoC 的方法。
我本来希望这样做的方法是
但事实证明(我什至有点理解为什么),ICanHasCheezburger
构造函数参数只是一个虚拟参数,并没有实际评估。这意味着名称也将被忽略,并且接口的默认注册已解决 - 但这是cheez1
,我不想在这里使用它。
实际上,在杰夫阿特伍德的橡皮鸭问题解决的另一个案例中,我只是想通了:
成功了。但是,如果我有更多的构造函数参数,我必须明确声明所有的 container.Resolve() 调用,对吧?史蒂文? ;-)
inversion-of-control - 在 Nancy 项目中获取 TinyIoc 当前容器
我正在构建一个小型 Nancy Web 项目。
在我的一个类(不是 nancy 模块)的方法中,我想基本上做:
.Current
但是, (非公共成员,_RegisteredTypes)中只有一个注册, 即:
TinyIoC.TinyIoCContainer.TypeRegistration
自然,在我上面的代码中,我得到:
无法解析类型:My.Namespace.IMyThing
所以,我想我没有在我的引导程序中注册相同的容器?
有没有办法解决它?
编辑
为了充实我正在尝试做的事情:
基本上,我的 url 结构看起来像:
/{myType}/{myMethod}
因此,想法是:/customer/ShowAllWithTheNameAlex 将加载Customer
服务,并执行该showAllWithTheNameAlex
方法
我的做法是:
然后我有一个抽象基类,带有一个返回服务的方法 GetService。
我在这里尝试使用 TinyIoC.TinyIoCContainer.Current.Resolve();
在这种情况下,它将是 TinyIoC.TinyIoCContainer.Current.Resolve("typeName");
这是我的服务实现。
最后,我有我的 Nancy 模块,它看起来像: