protected override void Load(ContainerBuilder builder) { //register MQTT devices pool builder.RegisterType <SysMonitorsPool>() .As <ISysMonitorsPool>() .SingleInstance(); //declare Mqtt client builder.RegisterType <MqttFactory>().AsSelf(); builder.Register(c => c.Resolve <MqttFactory>().CreateMqttClient()) .As <IMqttClient>(); //register Mqtt MqttPublisher builder.RegisterType <MqttPublisher>() .WithParameter(new TypedParameter(typeof(ISocketPrefs), MqttPublisher.GetDefaultPrefs())) .As <IMqttPublisher>(); //register devices builder.RegisterType <MqttCpuTemperatureMonitor>().SingleInstance(); builder.Register <IMqttMessageSender>((c, p) => { var parameters = p.ToList(); if (parameters.Count == 0) { return(c.Resolve <MqttCpuTemperatureMonitor>()); } return(new MqttCpuServiceMonitor(parameters.Named <int>("procId"), parameters.Named <string>("serviceName"))); }); //register Mqtt device factory builder.RegisterType <DeviceFactory>().AsSelf().SingleInstance(); //register callback builder.RegisterBuildCallback(scope => Ioc = scope); }