Exemple #1
0
 /// <summary>
 /// Gets all items assignable to a specific type
 /// </summary>
 /// <param name="self">The module info instance</param>
 /// <typeparam name="T">The type of items to return</typeparam>
 /// <returns>The items matchin the given type</returns>
 public static IEnumerable <T> GetItemsOfType <T>(this ILoadedModuleInfo self)
 => new T[0]
 .Concat(self?.Handlers?.Select(x => x.Value).OfType <T>() ?? new T[0])
 .Concat(self?.Loggers?.OfType <T>() ?? new T[0])
 .Concat(self?.Modules?.OfType <T>() ?? new T[0])
 .Concat(self?.PostProcessors?.OfType <T>() ?? new T[0]);
Exemple #2
0
 /// <summary>
 /// Gets a named module of the given type
 /// </summary>
 /// <param name="self">The module info instance</param>
 /// <param name="name">The name of the module to find</param>
 /// <param name="comparer">The string comparer</param>
 /// <typeparam name="T">The type of item to return</typeparam>
 /// <returns>The first match</returns>
 public static T GetNamedItem <T>(this ILoadedModuleInfo self, string name, StringComparison comparer = StringComparison.OrdinalIgnoreCase)
 => GetItemsOfType <INamedModule>(self)
 .Where(x => string.Equals(x.Name, name, comparer))
 .OfType <T>()
 .FirstOrDefault();