public Extension(IAppExtension extension, IAppServiceConnectionFactory connectionFactory) { _connectionFactory = connectionFactory; AppExtension = extension; UniqueId = extension.GetUniqueId(); _state = ExtensionState.Uninitialized; }
private async Task LoadExtension(IAppExtension extension) { if (!extension.Package.VerifyIsOK() || !_allowedPackageSignatureKinds.Contains(extension.Package.SignatureKind)) { //TODO: Log return; } var identifier = extension.GetUniqueId(); var existingExtension = Extensions.FirstOrDefault(e => e.UniqueId == identifier); if (existingExtension == null) { var newExtension = new Extension <TMessage, TResponse>(extension, _connectionFactory); Extensions.Add(newExtension); await newExtension.Initialize(); newExtension.Load(); } else { existingExtension.Unload(); await existingExtension.Update(extension); } }