【问题标题】:Unity Resolve Without Params?Unity Resolve 没有参数?
【发布时间】:2017-04-30 00:41:44
【问题描述】:

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

container.RegisterType<IMyService, MyService>();

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

container.Resolve<IMyService>();

但是没有无参数的Resolve。我唯一的选择是我必须给出类型、“名称”(一个字符串)和一个 ResolverOverride 数组。

为什么我注册的接口不能直接解析?

【问题讨论】:

  • 我添加了一个答案,但如果它没有帮助,您能否提供您正在使用的 Unity 版本,以及更长的代码示例,如果您有例外,请提供一个例外。

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


【解决方案1】:

您的注册和分辨率应该没问题。我想说的问题是要么你没有做using Microsoft.Practices.Unity;(通用解析是扩展方法),要么你注册的容器和你解析的容器不一样。

如果你不想做using using Microsoft.Practices.Unity;,那么你将不得不做这样的事情不使用泛型方法:

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

如果您在解析中添加断点,检查容器并发现没有注册,这可能意味着您没有使用相同的容器实例。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-04
      • 2010-10-21
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      相关资源
      最近更新 更多