autofac和控制台应用程序的注册混淆
本文关键字:注册 应用程序 控制台 autofac | 更新日期: 2023-09-27 17:59:23
我正试图在控制台应用程序中使用autofac进行依赖项注入。我遇到了autofac找不到某些接口/类的构造函数的问题。
这是我的最新例子:
I存储:
public interface IRepository<Planetary>
{
IEnumerable<Planetary> Get();
}
IPlanetaryRepository:
public interface IPlanetaryRepository : IRepository<Planetary>
{
IQueryable<Planetary> GetPlanetary(SystemProbe user);
}
飞机服务:
public interface IPlanetaryService
{
Task<Planetary> Clone(Planetary source);
}
public sealed class PlanetaryService : IPlanetaryService
{
private IPlanetaryRepository Repo { get; }
public PlanetaryService(IPlanetaryRepository repo)
{
Repo = repo;
}
}
调度程序:
public class Scheduler
{
private static IContainer Container { get; set; }
static void Main()
{
var builder = new ContainerBuilder();
builder.RegisterType<PlanetaryService>().As<PlanetaryService>();
builder.RegisterType<IPlanetaryRepository>().As<IPlanetaryRepository>();
Container = builder.Build();
GenerateSchedules();
}
public static void GenerateSchedules()
{
using (var scope = Container.BeginLifetimeScope())
{
var repo = scope.Resolve<PlanetaryService>(); <-- line where exception is thrown
}
}
}
在类型"IPlanetaryRepository"上找不到具有构造函数查找器"Autofac.Core.Activators.Reflection.DefaultConstructorFinder".
如果我取出IPlanetaryRepository,我会得到这个异常:
无法解析构造函数的参数IPlanetaryRepository repo。。。
所以我真的不知道该怎么办。"PlanetaryService"需要"IPlanetaryRepository"作为参数,但IPlanetary Repository没有构造函数。
有没有办法纠正这种情况?
您没有任何实现IPlanetaryRepository的类,因此它找不到构造函数。