如何配置Unity以使用构造函数注入

时间:2015-07-16 14:41:28

标签: c# model-view-controller dependency-injection

在我的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());
    }
}

因此,我错过了我告诉团结接管并在我新建东西时注入的位置。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

假设默认Unity配置所有类都使用Unity自动注册,那么您唯一需要的就是为容器上的类调用Resolve

var theThing = container.Resolve<Thing>();

请注意,通常情况下,您可以通过依赖其他类(即控制器)中的Thing来实现它。

如果您需要创建Thing的多个实例 - 取而代之的是依赖于Func<Thing>(这也是自动注册的,并提供了以您使用{的方式创建按容器解析的实例的方法{1}})。

new