团结解决没有参数?

时间:2017-04-30 00:41:44

标签: c# .net inversion-of-control unity-container

我正在使用Unity Container。我像这样注册我的依赖 -

container.RegisterType<IMyService, MyService>();

我希望像这样解决这种类型 -

container.Resolve<IMyService>();

但是没有无参数Resolve。我唯一的选择是我必须提供类型,&#34; name&#34; (一个字符串)和一个ResolverOverride数组。

为什么我不能解析我注册的界面?

2 个答案:

答案 0 :(得分:1)

您的注册和解决方案应该没问题。我要说问题是你没有做using Microsoft.Practices.Unity;(通用解决方案是扩展方法),或者你注册的容器和你解决的容器不一样。

如果您不想using using Microsoft.Practices.Unity;,那么您必须做这样的事情,不要使用通用方法:

IMyService myService = (IMyService)container.Resolve(typeof(IMyService));

如果在解析时添加断点,请检查容器,看到没有注册,这可能意味着您没有使用容器的同一个实例。

答案 1 :(得分:0)

根据使用情况,有不同类型的解决方案。您可以按类型解析,按注册名称和类型解析,解析所有类型的对象并使用覆盖来解决。它取决于您在上面的示例中尝试的依赖项类型。