public override void Initialize(Dictionary <string, object> settings) { string pluginNamespace = GetContainerNamespace(); //load types specific to this host into TypeContainer TagConfigDatabase tagConfigDatabase = TagConfigDatabase.Instance; tagConfigDatabase.Load(ConfigUtility.ReadFile(settings.GetValueOrNull("OpcTagConfigFile") as string)); TagStateManager tagStateManager = new TagStateManager(tagConfigDatabase); settings["TagStateManager"] = tagStateManager; settings["TagConfigDatabase"] = tagConfigDatabase; //configure receiver TypeContainer tc = TypeContainer.Instance; IProcessor opcReceiver = tc.GetInstance <IReceiver>(pluginNamespace) as IProcessor; IConverter <object, Tag> opcConverter = tc.GetInstance <IConverter <object, Tag> >(pluginNamespace); settings["Logger"] = tc.GetInstance <ILogger>(); settings["OpcTagConverter"] = opcConverter; if (opcReceiver != null) { this.AddReceiver("OpcReceiver", opcReceiver); } //configure IotHub Sender: need "IotHubConfigFile", "TagStateManager", "TagToIotHubMessageConverter" in settings settings["TagToIotHubMessageConverter"] = tc.GetInstance <IConverter <Tag, object> >(pluginNamespace); IProcessor iotHubSender = tc.GetInstance <ISender>(pluginNamespace) as IProcessor; if (iotHubSender != null) { this.AddSender("IotHubSender", iotHubSender); } base.Initialize(settings); }