Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Autofac激活特定注册时出错_C#_Oop_Dependency Injection_Interface_Autofac - Fatal编程技术网

C# 使用Autofac激活特定注册时出错

C# 使用Autofac激活特定注册时出错,c#,oop,dependency-injection,interface,autofac,C#,Oop,Dependency Injection,Interface,Autofac,这是我们使用Autofac builder.Register(c => new FileLogger(ILogger)).As<ILogger>().SingleInstance(); var sizeinkb= Convert.ToInt32(configuration.GetValue<string>("Settings:SizeInKb")); builder.RegisterType<Broker>().As<IBroker>()

这是我们使用
Autofac

builder.Register(c => new FileLogger(ILogger)).As<ILogger>().SingleInstance();

var sizeinkb= Convert.ToInt32(configuration.GetValue<string>("Settings:SizeInKb"));

builder.RegisterType<Broker>().As<IBroker>().WithParameter("size", sizeinkb).SingleInstance();
builder.RegisterType<MainClass>().As<IMainClass>().SingleInstance();

var container = builder.Build();
ContainerFactory.SetContainer(container);
这是broker类

public class Broker:IBroker 
{
     public Broker(ILogger logger,
             int size)
     {

     }
}
Autofac.Core.dependencResolutionException HResult=0x80131500 消息=在激活特定注册期间发生错误。有关详细信息,请参见内部异常。注册:Activator=MainClass(ReflectionActivator),Services=[MyProject.IMainClass],Lifetime=Autofac.Core.Lifetime.RootScopeLifetime,Shared=Shared,Ownership=OwnedByLifetimeScope-->在类型“MyProject.MainClass”上使用“Autofac.Core.Activators.Reflection.DefaultConstructorFinder”找到的构造函数都不能使用可用的服务和参数调用: 无法解析构造函数“Void.ctor(MyProject.IBroker,MyProject.ILogger)”的参数“MyProject.IBroker broker”


这里是另一种方法,在lambda设置期间可以解析依赖关系

//...removed for brevity

var sizeinkb = Convert.ToInt32(configuration.GetValue<string>("Settings:SizeInKb"));
builder.Register(c => new Broker(c.Resolve<ILogger>(), sizeinkb))
    .As<IBroker>().SingleInstance();
builder.RegisterType<MainClass>().As<IMainClass>().SingleInstance();

var container = builder.Build();
ContainerFactory.SetContainer(container);
//…为简洁起见已删除
var sizeinkb=Convert.ToInt32(configuration.GetValue(“Settings:sizeinkb”);
Register(c=>newbroker(c.Resolve(),sizeinkb))
.As().SingleInstance();
builder.RegisterType().As().SingleInstance();
var container=builder.Build();
ContainerFactory.SetContainer(容器);

这里是另一种方法,可以在lambda设置期间解决依赖关系

//...removed for brevity

var sizeinkb = Convert.ToInt32(configuration.GetValue<string>("Settings:SizeInKb"));
builder.Register(c => new Broker(c.Resolve<ILogger>(), sizeinkb))
    .As<IBroker>().SingleInstance();
builder.RegisterType<MainClass>().As<IMainClass>().SingleInstance();

var container = builder.Build();
ContainerFactory.SetContainer(container);
//…为简洁起见已删除
var sizeinkb=Convert.ToInt32(configuration.GetValue(“Settings:sizeinkb”);
Register(c=>newbroker(c.Resolve(),sizeinkb))
.As().SingleInstance();
builder.RegisterType().As().SingleInstance();
var container=builder.Build();
ContainerFactory.SetContainer(容器);