我正在实现一个新的.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/