问题标签 [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.

0 投票
1 回答
9550 浏览

c# - TinyIoC 的构造函数注入

我刚刚从 Ninject 更改为 TinyIoC 进行依赖注入,但在构造函数注入时遇到了问题。

我设法将其简化为以下代码段:

这会导致 TinyIoCResolutionException 被抛出:

并且在该异常内部是一连串内部异常:

我使用构造函数注入的方式有问题吗?我意识到我可以打电话

这确实有效,但是结果是 Bar 的全局实例,这不是我所追求的。

有任何想法吗?

0 投票
1 回答
16960 浏览

nancy - 在 TinyIOC 中注册依赖项以在 NancyFX 中使用

我有另一个关于在 TinyIoc 中注册其他依赖项以在 NancyFX 中使用的新手问题。

运行应用程序时,我继续收到以下异常...

我目前正在错误地注册我的依赖项,但我似乎无法找出正确的方法。下面是我的自定义引导程序中的代码。另请注意,我目前没有调用 base.ConfigureRequestContainer 方法,因为我似乎无法弄清楚如何将当前上下文传递给它。

任何帮助将不胜感激......显然我的无知没有限制:)

0 投票
3 回答
4374 浏览

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)?

0 投票
1 回答
1068 浏览

c# - TinyIoc - 如何配置所有接口注册 AsPerRequestSingleton?

以上是我现有的应用程序启动,其中包含我的 TinyIoc 配置。有没有办法把所有的接口注册都变成 PerRequestSingleton?我不能“一个一个”地做它们,因为我有太多的存储库,而且我不能把它们作为单例,因为它不适用于 NHibernate 的设置方式。

0 投票
1 回答
1682 浏览

.net - TinyIoC:在单个实例上注册多个接口

Autofac 允许使用 .AsImplementedInterfaces() 或链式 .As<>() 调用与 .SingleInstance() 一起非常轻松地将多个接口解析为同一个实例。这也可以用 TinyIoC 完成吗?我只找到了如何注册同一接口的多个实现,但没有办法链接注册等。

据我了解,这对于 IoC 容器来说是一个非常重要的特性,不是吗?

0 投票
1 回答
512 浏览

xamarin.android - TinyIoC 和发布版本

我正在做我的第一个发布版本,并且在使用 TinyIoC 和解决通过 TinyIoC 使用的接口时遇到问题。

我们得到的架构是:

Universal.Mobile.Droid.application - 主应用程序

Universal.Mobile.Droid.Interfaces - 包含 IUniversalMobileDroidDAO 的定义

Universal.Mobile.Droid.DAO.UltraliteDAO - 包含 IUniversalMobileDroidDAO 的实现

当我在我的设备上进行发布构建和部署/运行时,出现错误:

我需要调整我的构建/链接器/清单来解决这个问题吗?

问候,

詹姆士

0 投票
2 回答
565 浏览

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 和一切。我想通过以下任一方式(按优先顺序)停止设计器加载错误:

  • 了解如何修复代码以与设计人员一起正常工作
  • 为设计人员使用模拟数据存根现有的控制数据
  • 禁用此设计器功能
0 投票
2 回答
984 浏览

ravendb - 解决构造函数对 NancyFX 中使用的服务的依赖

我有以下引导程序

当我的 Nancy 应用程序尝试使用以下构造函数实例化 BlogService 时

应用程序爆炸说它无法解析文档会话,我还在我的测试方法中尝试了以下操作(删除构造函数注入)。

这也炸了,指出它无法解析documentSession。

现在这是我第一次使用 NancyFX 或 TinyIoC,所以我可能会做一些根本错误的事情,尽管我应该提到 documentSession 确实在 Nancy 模块中解析..

任何人都可以提供修复或一些建议吗?

0 投票
1 回答
1385 浏览

c# - 在 TinyIoC 中注入命名注册

我有一个带有以下构造函数签名IRofl的实现的接口:DefaultRofl

ICanHasCheezburger有几个实现,其中我需要通过 IoC 容器解决多个,我认为命名注册是正确的方法。

假设我有两个预先创建的实例,希望一个作为默认注册,另一个命名为:

现在我需要指定 for DefaultRofl,应该解决“x2”注册 - 这就是我卡住的地方。我知道 Autofac 可以做到这一点,但我找不到 TinyIoC 的方法。

我本来希望这样做的方法是

但事实证明(我什至有点理解为什么),ICanHasCheezburger构造函数参数只是一个虚拟参数,并没有实际评估。这意味着名称也将被忽略,并且接口的默认注册已解决 - 但这是cheez1,我不想在这里使用它。

实际上,在杰夫阿特伍德的橡皮鸭问题解决的另一个案例中,我只是想通了:

成功了。但是,如果我有更多的构造函数参数,我必须明确声明所有的 container.Resolve() 调用,对吧?史蒂文? ;-)

0 投票
3 回答
4079 浏览

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 模块,它看起来像: