【问题标题】:Net Core dependency injection in NuGet packageNuGet 包中的 Net Core 依赖注入
【发布时间】:2021-09-02 13:29:59
【问题描述】:

我有一个 NuGet 包 Repository,它有一个接口 IRepository.cs 和实现 Repository.cs

有没有办法针对接口注册实现(在作为 NuGet 发布的类库中)所以我不必在我使用 nuget 的每个项目中都这样做?

【问题讨论】:

  • 你能做的最大的事情就是拥有一个扩展功能,它也将考虑到未来的注册
  • @NevilleNazerane 我认为你是对的。我想不出另一种解决方案。请发布它作为答案。如果有任何其他解决方案出现,我会看到。

标签: asp.net-core dependency-injection nuget


【解决方案1】:

您可以创建一个 Service Provider 实例以在您的类库内部使用依赖注入。

using Microsoft.Extensions.DependencyInjection;

public class Program
{
    public static void Main(string[] args)
    {
        var serviceProvider = new ServiceCollection()
            .AddSingleton<IRepository, Repository>()
            .BuildServiceProvider();

        var repository = serviceProvider.GetService<IRepository>();
    }
}

interface IRepository {

    void Do();
}

class Repository : IRepository
{
    public void Do()
    {
        System.Console.WriteLine("Do");
    }
}

【讨论】:

  • 掘金中没有 Program.cs。不在矿山中。
  • 我的意思是如果你需要在你的类库内部使用di,你可以创建ServiceProvider的实例,而不是依赖例如asp.net核心项目的ServiceProvider。在这种情况下,您可以像 main 方法中的代码一样进行初始化。您的类库项目中不需要 Program.cs。
猜你喜欢
  • 2016-05-22
  • 1970-01-01
  • 2021-07-15
  • 2020-02-18
  • 2021-10-23
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2020-12-20
相关资源
最近更新 更多