2using System.Collections.Generic;
13 private readonly Dictionary<string, IMathematicalModelFormulation>
16 StringComparer.OrdinalIgnoreCase);
41 ArgumentNullException.ThrowIfNull(
44 string formulationId =
45 NormalizeFormulationId(
48 if (!_formulations.TryAdd(
52 throw new InvalidOperationException(
53 $
"Mathematical formulation '{formulationId}' is " +
54 "already registered.");
74 ArgumentNullException.ThrowIfNull(
77 string formulationId =
78 NormalizeFormulationId(
81 _formulations[formulationId] =
98 string normalizedFormulationId =
99 NormalizeFormulationId(
102 return _formulations.ContainsKey(
103 normalizedFormulationId);
120 string formulationId)
122 string normalizedFormulationId =
123 NormalizeFormulationId(
126 if (_formulations.TryGetValue(
127 normalizedFormulationId,
133 throw new KeyNotFoundException(
134 $
"No mathematical formulation is registered for " +
135 $
"identifier '{normalizedFormulationId}'.");
152 string formulationId,
155 string normalizedFormulationId =
156 NormalizeFormulationId(
159 return _formulations.TryGetValue(
160 normalizedFormulationId,
175 string formulationId)
177 string normalizedFormulationId =
178 NormalizeFormulationId(
181 return _formulations.Remove(
182 normalizedFormulationId);
192 public IReadOnlyList<IMathematicalModelFormulation>
GetAll()
194 return _formulations.Values
198 StringComparer.OrdinalIgnoreCase)
201 formulation.FormulationId,
202 StringComparer.OrdinalIgnoreCase)
211 _formulations.Clear();
214 private static string NormalizeFormulationId(
215 string formulationId)
217 if (
string.IsNullOrWhiteSpace(
220 throw new InvalidOperationException(
221 "A mathematical formulation identifier is " +
225 return formulationId.Trim();