diff --git a/Moonlight.Frontend/Configuration/SystemSettingsOptions.cs b/Moonlight.Frontend/Configuration/SystemSettingsOptions.cs index 8e4e022d..b5f8bb80 100644 --- a/Moonlight.Frontend/Configuration/SystemSettingsOptions.cs +++ b/Moonlight.Frontend/Configuration/SystemSettingsOptions.cs @@ -9,18 +9,20 @@ public class SystemSettingsOptions private readonly List InnerComponents = new(); - public void Add(string name, string description, int order) + public void Add<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TIcon, + [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>(string name, string description, + int order) where TIcon : ComponentBase where TComponent : ComponentBase => Add(name, description, order, typeof(TIcon), typeof(TComponent)); - public void Add(string name, string description, int order, Type iconComponent, Type component) + public void Add(string name, string description, int order, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type iconComponent, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type component) => InnerComponents.Add(new SystemSettingsPage(name, description, order, iconComponent, component)); public void Remove<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] TComponent>() where TComponent : ComponentBase => Remove(typeof(TComponent)); - public void Remove(Type componentType) + public void Remove([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type componentType) => InnerComponents.RemoveAll(x => x.ComponentType == componentType); } @@ -28,7 +30,6 @@ public record SystemSettingsPage( string Name, string Description, int Order, - [property: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type IconComponentType, Type ComponentType ); \ No newline at end of file