在不使用DI容器的情况下在ASP.NET Core中实例化控制器的正确方法是什么?

时间:2017-04-18 13:02:23

标签: dependency-injection asp.net-core

Startup.ConfigureServices中,我有这段代码:

services.AddSingleton<IControllerActivator>(new LicenseKeyControllerActivator(keyService));

LicenseKeyControllerActivator如下所示:

public class LicenseKeyControllerActivator
    : IControllerActivator
{
    private readonly ILicenseKeyService _keyService;

    public LicenseKeyControllerActivator(ILicenseKeyService licenseKeyService)
    {
        _keyService = licenseKeyService;
    }

    public object Create(ControllerContext context)
    {
        return new LicenseController(_keyService);
    }

    public void Release(ControllerContext context, object controller)
    {
        return;
    }
}

在请求 - 响应生命周期中,激活器创建控制器,基于DataAnnotations的验证工作,过滤器过滤器,但不会调用任何控制器方法。事实上,在DTO上调用set后,会立即调用Release

我不确定这是a routing problem还是控制器激活器问题。

0 个答案:

没有答案