【发布时间】:2017-11-04 23:30:01
【问题描述】:
我正在尝试使用 Dotnet 核心 2.0 Microsoft.Extensions.DependencyInjection nuget 包附带的 IServiceCollection 设置一个简单的依赖项注入。我是新手,所以我从一个小实验开始:
public interface IService
{
}
public class JobService : IService
{
public IService m_service { get; set; }
public JobService(IService service)
{
m_service = service;
}
}
class Program
{
static void Main(string[] args)
{
IServiceCollection serviceCollection = new ServiceCollection();
ConfigureService(serviceCollection);
var serviceProvider = serviceCollection.BuildServiceProvider();
//exception on next line
var service = serviceProvider.GetService<App>();
Console.WriteLine("Hello World!");
}
private static void ConfigureService(IServiceCollection serviceCollection)
{
serviceCollection.AddTransient<IService, JobService>();
serviceCollection.AddTransient<App>();
}
}
以上内容应该向容器注册所有类型,但在运行时,我得到:
System.InvalidOperationException: '检测到'TestCore.IService' 类型的服务的循环依赖。'
我在我的实现中没有看到循环依赖。有人能指出这种循环依赖的来源吗?
至于服务,应该是注入到我做的这个App类中:
public class App
{
private IService m_service;
public App(IService service)
{
m_service = service;
}
}
【问题讨论】: