Ejemplo n.º 1
0
 /// <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));
 }
Ejemplo n.º 2
0
        /// <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));
        }
Ejemplo n.º 3
0
        /// <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);
                }
            }
        }