c# - IServiceProvider.GetService(Type serviceType) 的目的是什么?

标签 c# asp.net-core dependency-injection interface asp.net-core-2.0

我正在实现一个新的 .NET Core 项目并为我的服务层进行依赖注入(inject)。我创建了一个实现 IServiceProvider 的接口(interface),现在必须实现 GetService(Type serviceType)。这是我的界面。

public interface INewsService : IServiceProvider
{
    IEnumerable<string> GetAllSources();
}

public class NewsService : INewsService
{
    private readonly INewsRepository _newsRepository;

    public NewsService(INewsRepository newsRepository)
    {
        _newsRepository = newsRepository;
    }

    public IEnumerable<string> GetAllSources()
    {
        return _newsRepository.GetAllSources();
    }

    public object GetService(Type serviceType)
    {
        throw new NotImplementedException();
    }
}

该方法的目的是什么?通读MSDN documentation ,真的很模糊,并没有把它弄清楚太多。我的代码在我启动时运行...所以我不确定它需要做什么。

最佳答案

Gets the service object of the specified type.

您不应该在 INewsService 接口(interface)上实现 IServiceProvider

IServiceProvider 描述工厂以创建您的服务实例:

IServiceProvider provider = GetServiceProvider();
var newsService = provider.GetService(typeof(INewsService));

阅读有关服务提供商的更多信息:IServiceProvider in ASP.NET Core

关于c# - IServiceProvider.GetService(Type serviceType) 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49570686/

相关文章:

c# - Visual Studio 不会运行测试类中的所有单元测试

javascript - 如何将 ajax.abort() 传播到 Controller

c# - 通过调用 'IServiceCollection.AddHealthChecks' 添加所有需要的服务

asp.net-core - 带有 Cookie 和 Windows 身份验证的 ASP.NET Core

c# - 如何为特定接口(interface)类型注册DI服务?

java - 如何将一个spring项目包含到另一个spring项目中

.net - Unity IOC 静态工厂

C# 获取对象的实际 TypeDescriptionProvider 或 TypeDescriptor

c# - 在 C# 中的循环中捕获变量

asp.net-core - 在中间件中获取异常