/// <summary> /// Initializes a new instance of the <see cref="ParallelSimulation"/> class. /// </summary> /// <param name="parent">The parent simulation.</param> /// <param name="parameters">The parallel component parameters.</param> public ParallelSimulation(ISimulation parent, IParameterSetCollection parameters) : base(parent, new BehaviorContainerCollection(parent?.EntityBehaviors.Comparer), new InheritedTypeSet <ISimulationState>()) { LocalParameters = parameters.ThrowIfNull(nameof(parameters)); }
/// <summary> /// Creates a dictionary of all properties and their values on a parameter set. /// </summary> /// <typeparam name="T">The parameter value type.</typeparam> /// <param name="parameterSetCollection">The parameter set.</param> /// <param name="givenOnly">If <c>true</c>, only parameters that were set/given are returned and parameters that are left to their default/nonsense value are skipped. <c>true</c> by default.</param> /// <returns> /// A read-only dictionary for all members and their values. /// </returns> public static IReadOnlyDictionary <MemberDescription, T> ParameterValues <T>(this IParameterSetCollection parameterSetCollection, bool givenOnly = true) { var result = new Dictionary <MemberDescription, T>(); foreach (var ps in parameterSetCollection.ParameterSets) { var n = ParameterValues <T>(ps, givenOnly); foreach (var pair in n) { result.Add(pair.Key, pair.Value); } } return(new ReadOnlyDictionary <MemberDescription, T>(result)); }
/// <summary> /// Enumerates all the named members. /// </summary> /// <param name="parameterized">The parameterized object.</param> /// <returns> /// The named parameters. /// </returns> public static IEnumerable <MemberDescription> Parameters(this IParameterSetCollection parameterized) { foreach (var ps in parameterized.ParameterSets) { // Allow recursive parameterized objects if (ps is IParameterSetCollection child) { foreach (var md in Parameters(child)) { yield return(md); } } // Show the parameters in the parameter set foreach (var md in Parameters(ps)) { yield return(md); } } }