C# 需要注册构造函数的构造函数的Autofac注册类型';s依赖关系
我有两个项目,第一个运行时,他注入依赖项,第二个运行时,他也向自己注入一些依赖项。 在第一个项目中,我有一个名为“SchedulerImpl”的类,如下所示:C# 需要注册构造函数的构造函数的Autofac注册类型';s依赖关系,c#,asp.net,dependency-injection,autofac,C#,Asp.net,Dependency Injection,Autofac,我有两个项目,第一个运行时,他注入依赖项,第二个运行时,他也向自己注入一些依赖项。 在第一个项目中,我有一个名为“SchedulerImpl”的类,如下所示: public class SchedulerImpl: ISche { private IScheduler _scheduler; private string _uniqueId { get; set; } private string _userId; public SchedulerImpl(
public class SchedulerImpl: ISche
{
private IScheduler _scheduler;
private string _uniqueId { get; set; }
private string _userId;
public SchedulerImpl(IScheduler scheduler)
{
_scheduler = scheduler;
}
如您所见,构造函数采用isScheduler类型
在project#2中,我尝试注入“SchedulerImpl”类(属于project#1),我还需要注入构造函数注入的IsScheduler,关于如何做到这一点,有什么想法吗?
我在看文档,但它太让人困惑了。。任何帮助都将不胜感激容器应如下所示 Register(c=>newschedulerimpl(QuartzInstance.Instance)).As() 在哪里 日程安排 是包含要注入的构造函数的类 实例 是注入构造函数的字段, 及 伊斯奇
是SchedulerImpl实现的接口您应该注册
isScheduler
,例如作为一个单例:
builder.RegisterInstance(QuartzInstance.Instance).AsImplementedInterfaces();
然后是使用它的类:
builder.RegisterType<SchedulerImp>().AsImplementedInterfaces();
builder.RegisterType();
让容器为您解决这些问题。您不需要手动执行此操作,除非您需要向构造函数传递无法解决的特定内容
如果您有两个项目,并且每个项目都需要在容器中注册一组类或单例,请在Autofac中使用
模块。ISche
是打字错误吗?你只是想把IScheduler
的一个实现注入到另一个实现中吗?不,在我发布问题的3小时后,我会设法做到这一点,lol,现在发布答案吗?也许你知道有没有办法从另一个项目中获取现有的Instance?与第一个#项目相同的实例?项目不“运行”。如果您在启动时注册所有依赖项,包括IScheduler
实例,那么当您解析ISche
时,容器将为您解析IScheduler
,并将其注入构造函数。您不需要手动执行此操作。编写单元测试以确保容器能够解析它应该解析的内容并注入您希望它注入的内容可能会有所帮助。很抱歉,我很难理解,“builder.Register(QuartzInstance.Instance).AsImplementedInterfaces();”无效,因为Register是一个函数,为什么是:builder.Register(c=>newschedulerimpl(QuartzInstance.Instance)).As();不好?对不起,更正了,我是指单身人士的注册状态。请看,这种方法更灵活:它不限制两个类的生命周期,也不依赖于SchedulerImp
类的特定构造函数。e、 g.如果您以后使这两个类都是暂时的(比如说,每个http请求),或者将另一个依赖项添加到SchedulerImp
。