我正在实现一个新的.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,这确实很模糊,并且不会清除得太多。我的代码在启动时会运行...所以我不确定它需要什么。

最佳答案



您不应该在IServiceProvider接口(interface)上实现INewsService
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/

10-10 15:34