【问题标题】:LightInject: Call HttpPost MethodLightInject:调用 HttpPost 方法
【发布时间】:2021-12-16 17:51:13
【问题描述】:

我有这个带有 HTTPPost 方法的类:

公共类 MyController : ControllerBase { 私有只读 ILog _logger;

    public MyController(ILog logger)
    {
        this._logger = logger;
    }

    [Route("api/route/{Id}/Start")]
    [HttpPost]
    public async Task<IActionResult> Start(string Id)
    {
         ...

在 BootStrap 类中,我想调用 Start 方法。我该怎么做?:

IServiceContainer _serviceContainer;

    public MyBootstrapper(IServiceContainer container)
    {
         container.RegisterConstructorDependency<ILog>((factory, info) => new InfoLogger(info.Member.DeclaringType));
    }

    public async Task RunAsync()
    {
        await RegisterServicesAsync();
    }

    protected static async Task RegisterServicesAsync()
    {
        IServiceContainer container = new ServiceContainer();
        container.Register<MyController>();

        using (container.BeginScope())
        {
             //I must call here?

我想做的是从控制台应用程序调用 My Method:

 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {  
        Bootstrapper.RunAsync().Wait();

在 Bootrapper 中调用我在不同服务中的方法。

【问题讨论】:

  • 这似乎几乎肯定是错误的方式去做任何你想做的事情。你能澄清一下实际目标是什么吗?
  • 你在这里的意图是什么?在 .net 核心中,您通常在 StartUp 类中注册所有内容。在您的 Startup 类中,您可以调用 Bootstrap 类。您可以尝试将(此 IServiceContainer 容器)添加到您的方法签名中,以便您可以从启动类中调用它。
  • 我想通过我的 Web API 进行测试。
  • 啊好吧。尝试使用起订量。这是一种为单元测试伪造注入的绝妙方法。对于集成测试,请看这里...docs.microsoft.com/en-us/aspnet/core/test/…

标签: c# .net-core asp.net-web-api constructor


【解决方案1】:

您的方法似乎有误。

在你的启动类位置这个部分

public void ConfigureServices(IServiceCollection services)
{
    // existing code

    // add this
    BootStrap.RegisterServices();
}

在您的 BootStrap 文件中执行类似的操作(更新您的代码)。我会建议删除重置

public void RegisterServices(this IServiceCollection collection)
{
    // or whatever required scope. AddSingleton, AddTransient, AddScoped
    collection.AddTransient<ISomeInterface, SomeImplementationOfISomeInterface>();
    ///...add more as needed
}

这是一个很好的起点 Microsoft DI Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多