我正在使用Unity Container。我像这样注册我的依赖 -
container.RegisterType<IMyService, MyService>();
我希望像这样解决这种类型 -
container.Resolve<IMyService>();
但是没有无参数Resolve
。我唯一的选择是我必须提供类型,&#34; name&#34; (一个字符串)和一个ResolverOverride数组。
为什么我不能解析我注册的界面?
答案 0 :(得分:1)
您的注册和解决方案应该没问题。我要说问题是你没有做using Microsoft.Practices.Unity;
(通用解决方案是扩展方法),或者你注册的容器和你解决的容器不一样。
如果您不想using using Microsoft.Practices.Unity;
,那么您必须做这样的事情,不要使用通用方法:
IMyService myService = (IMyService)container.Resolve(typeof(IMyService));
如果在解析时添加断点,请检查容器,看到没有注册,这可能意味着您没有使用容器的同一个实例。
答案 1 :(得分:0)
根据使用情况,有不同类型的解决方案。您可以按类型解析,按注册名称和类型解析,解析所有类型的对象并使用覆盖来解决。它取决于您在上面的示例中尝试的依赖项类型。