更新整理
This commit is contained in:
37
WPFluent.Gallery/ControlsLookup/ControlPages.cs
Normal file
37
WPFluent.Gallery/ControlsLookup/ControlPages.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user