在我的MVC 5应用中,我正在使用Unity。构造函数注入正常工作正常。假设我有一个不是控制器的类,我有这个构造函数注入的设置,我怎么能配置Unity(代码而不是xml)来告诉它在我新建一个类的实例时使用构造函数注入。这可能吗?
我的课程如下:
public class Thing
{
private readonly IAuthorisationService _authorisationService;
public Thing()
{
}
public Thing(IAuthorisationService authorisationService)
{
_authorisationService = authorisationService;
}
public void Work()
{
var result = _authorisationService.IsAdmin(Guid.NewGuid());
}
}
因此,我错过了我告诉团结接管并在我新建东西时注入的位置。
有什么想法吗?
答案 0 :(得分:1)
假设默认Unity配置所有类都使用Unity自动注册,那么您唯一需要的就是为容器上的类调用Resolve
。
var theThing = container.Resolve<Thing>();
请注意,通常情况下,您可以通过依赖其他类(即控制器)中的Thing
来实现它。
如果您需要创建Thing
的多个实例 - 取而代之的是依赖于Func<Thing>
(这也是自动注册的,并提供了以您使用{的方式创建按容器解析的实例的方法{1}})。
new