public bool LoadAdditionalDlls() { Action onDllProcessed = () => progressCounter.IncreaseDoneWork(1); try { var operandSelectors = pluginManager.GetDlls(OPERAND_SELECTORS_FOLDER); var operations = pluginManager.GetDlls(OPERATIONS_FOLDER); var communicationInterfaces = pluginManager.GetDlls(COMMUNICATION_INTERFACES_FOLDER); progressCounter.Init(operandSelectors.Count + operations.Count + communicationInterfaces.Count); pluginManager.OnDllProcessed += onDllProcessed; pluginManager.RegisterChildren <OperandSelector>(operandSelectors); pluginManager.RegisterChildren <Operation>(operations, new object[] { networkOperator }, op => pluginManager.LoadRegisteredInstanceToField <Operation, OperandSelector>(op, op.OperandSelectorFieldName, op.OperandSelectorType)); pluginManager.RegisterChildren <ICommunicationInterface>(communicationInterfaces); return(true); } catch (IOException e) { UIUpdater.RaiseError(e.Message); return(false); } finally { pluginManager.OnDllProcessed -= onDllProcessed; } }