gpt4 book ai didi

c# - 在 ASP.net Core 中将对象实例化为服务

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:59 25 4
gpt4 key购买 nike

我对 Asp.Net 非常缺乏经验,我有一个类,我希望能够在某些 Controller 上实例化和使用它,但我不太确定如何为我的构造函数获取参数。

我有一个数据类型,我想将其用作名为 Watcher 的服务,它的构造函数签名为 Watcher(string _path, bool _DeletionPolicy = false) this提供监视文件的路径,并设置默认删除策略。 (False 是过期后什么都不做,文件在 90 天后“过期”。)

我知道我需要在 ConfigureServices() 中使用 MVC 注册服务,但是我将如何实例化这两个(或一个必需的)参数?

最佳答案

简而言之,您必须执行以下操作:

编写实现 IWatcher 接口(interface)的 Watcher 类:

public class Watcher : IWatcher
{
private readonly string _path;
private readonly bool _deletionPolicy;

public Watcher(string path, bool deletionPolicy = false)
{
_path = path;
_deletionPolicy = deletionPolicy;
}
}

然后在 Startup.cs 的 ConfigureServices 方法中将 IWatcher 注册到 Watcher 类中,如下所示:

services.AddTransient<IWatcher>(w => new Watcher("some path", deletionPolicy));

最后,在每个需要 Watcher 类的 Controller 中,在构造函数中使用 IWatcher 接口(interface)。当您将 IWatcher 添加到 Controller 构造函数时,依赖注入(inject)将实例化您在 ConfigureServices 方法中定义的 Watcher。之后它会将其注入(inject)构造函数并将其分配给私有(private)变量。然后您可以在需要的方法中在 Controller 中使用它。

public class SomeController : Controller
{
private readonly IWatcher _watcher;

public SomeController(IWatcher watcher)
{
_watcher = watcher;
}
}

关于c# - 在 ASP.net Core 中将对象实例化为服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52188816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com