Example #1
0
        /// <summary>
        /// Broadcasts an Action to all child components of a given root.
        /// </summary>
        /// <param name="obj">the root object.</param>
        /// <param name="message">the message to run.</param>
        /// <typeparam name="T">the type to run the Action against.</typeparam>
        /// <returns></returns>
        public static T[] Broadcast <T>(this Object obj, Action <T> message)
        {
            var components = ObjectUtility.GetAll <T>(obj);

            foreach (var component in components)
            {
                message(component);
            }
            return(components);
        }
Example #2
0
 /// <summary>
 /// Broadcasts an asynchronous Action to all child components of a given root.
 /// </summary>
 /// <param name="obj">the root object.</param>
 /// <param name="message">the message to run.</param>
 /// <typeparam name="T">the type to run the Action against.</typeparam>
 /// <returns>the awaitable task.</returns>
 public static Task Broadcast <T>(this Object obj, Func <T, Task> message) =>
 Task.WhenAll(ObjectUtility.GetAll <T>(obj).Select(message));