Files
Shrlalgo.RvKits/WPFluent.Gallery/ControlsLookup/ControlPages.cs

38 lines
1.1 KiB
C#
Raw Normal View History

2025-04-24 20:56:44 +08:00
using System.Reflection;
namespace WPFluent.Gallery.ControlsLookup;
internal static class ControlPages
{
private const string PageSuffix = "Page";
internal record GalleryPage(string Name, string Description, SymbolRegular Icon, Type PageType);
public static IEnumerable<GalleryPage> All()
{
foreach (
Type? type in Assembly.GetExecutingAssembly().GetTypes()
.Where(t => t.IsDefined(typeof(GalleryPageAttribute)))
)
{
GalleryPageAttribute? galleryPageAttribute = type.GetCustomAttributes<GalleryPageAttribute>()
.FirstOrDefault();
if (galleryPageAttribute is not null)
{
yield return new GalleryPage(
type.Name[..type.Name.LastIndexOf(PageSuffix)],
galleryPageAttribute.Description,
galleryPageAttribute.Icon,
type
);
}
}
}
public static IEnumerable<GalleryPage> FromNamespace(string namespaceName)
{
return All().Where(t => t.PageType?.Namespace?.StartsWith(namespaceName) ?? false);
}
}