在.NET类库中的何处执行启动?

bq3bfh9z  于 2023-04-13  发布在  .NET
关注(0)|答案(1)|浏览(91)

多年没有使用.NET,重新开始。
我想知道我在我正在开发的类库中执行启动的位置。这个类库将有几个不同的HttpClient,我想按照这里描述的模式使用DI创建它们。
我在哪里添加这段代码?是否在一个类中?我该怎么称呼它
我把它直接粘贴到Rider中,得到了各种各样的智能错误,所以不知道那里发生了什么。

g9icjywg

g9icjywg1#

链接的代码显示了如何将generic host用于可执行项目,类库通常不应该关心托管本身。
对于库,通常的方法是提供一个方法,通常在命名空间中,如MyLib.Extensions.DependencyInjection,它执行所有需要的设置和注册(好的做法是调用TryAdd而不是Add{Lifetime}):

namespace MyLib.Extensions.DependencyInjection;
public static class MyLibRegistrationExtensions
{
    // possibly add another parameter to provide/setup the SDK settings
    public static IServiceCollection AddMyLib(this IServiceCollection services)
    {
        // registration goes here
        return services;
    }
}

这个方法还可以暴露操作来设置库-public static IServiceCollection AddMyLib(this IServiceCollection services, Action<MyLibOptions> setOptions = null)的选项(例如,能够为不同的环境配置URL,但是如果库用户的数量有限,您可以遵循“惯例”,即应该在配置中设置相应的URL)。
参见:

相关问题