diff --git a/res/Banner3-large-cn.psd b/res/Banner3-large-cn.psd new file mode 100644 index 00000000..b9637833 Binary files /dev/null and b/res/Banner3-large-cn.psd differ diff --git a/res/Banner3-large.psd b/res/Banner3-large.psd new file mode 100644 index 00000000..35ca0d3a Binary files /dev/null and b/res/Banner3-large.psd differ diff --git a/res/Store/chs/abyss.psd b/res/Store/chs/abyss.psd new file mode 100644 index 00000000..2d65cffa Binary files /dev/null and b/res/Store/chs/abyss.psd differ diff --git a/res/Store/chs/achievement.psd b/res/Store/chs/achievement.psd new file mode 100644 index 00000000..d56e73d3 Binary files /dev/null and b/res/Store/chs/achievement.psd differ diff --git a/res/Store/chs/character-data.psd b/res/Store/chs/character-data.psd new file mode 100644 index 00000000..d69b3260 Binary files /dev/null and b/res/Store/chs/character-data.psd differ diff --git a/res/Store/chs/lancher.psd b/res/Store/chs/lancher.psd new file mode 100644 index 00000000..223cd981 Binary files /dev/null and b/res/Store/chs/lancher.psd differ diff --git a/res/Store/chs/realtime-notes.psd b/res/Store/chs/realtime-notes.psd new file mode 100644 index 00000000..daf275c7 Binary files /dev/null and b/res/Store/chs/realtime-notes.psd differ diff --git a/res/Store/chs/wish.psd b/res/Store/chs/wish.psd new file mode 100644 index 00000000..925e6413 Binary files /dev/null and b/res/Store/chs/wish.psd differ diff --git a/res/Store/en/abyss.psd b/res/Store/en/abyss.psd new file mode 100644 index 00000000..fe62a72c Binary files /dev/null and b/res/Store/en/abyss.psd differ diff --git a/res/Store/en/achievement.psd b/res/Store/en/achievement.psd new file mode 100644 index 00000000..ddd34805 Binary files /dev/null and b/res/Store/en/achievement.psd differ diff --git a/res/Store/en/character-data.psd b/res/Store/en/character-data.psd new file mode 100644 index 00000000..d26774f9 Binary files /dev/null and b/res/Store/en/character-data.psd differ diff --git a/res/Store/en/lancher.psd b/res/Store/en/lancher.psd new file mode 100644 index 00000000..c4f1bb22 Binary files /dev/null and b/res/Store/en/lancher.psd differ diff --git a/res/Store/en/realtime-notes.psd b/res/Store/en/realtime-notes.psd new file mode 100644 index 00000000..56a0d833 Binary files /dev/null and b/res/Store/en/realtime-notes.psd differ diff --git a/res/Store/en/wish.psd b/res/Store/en/wish.psd new file mode 100644 index 00000000..76653e4d Binary files /dev/null and b/res/Store/en/wish.psd differ diff --git a/src/Snap.Hutao/.editorconfig b/src/Snap.Hutao/.editorconfig index d3d7c0b4..5905c66a 100644 --- a/src/Snap.Hutao/.editorconfig +++ b/src/Snap.Hutao/.editorconfig @@ -110,7 +110,6 @@ dotnet_diagnostic.SA1642.severity = none dotnet_diagnostic.IDE0005.severity = warning dotnet_diagnostic.IDE0060.severity = none -dotnet_diagnostic.IDE0290.severity = none # SA1208: System using directives should be placed before other using directives dotnet_diagnostic.SA1208.severity = none @@ -321,7 +320,8 @@ dotnet_diagnostic.CA2227.severity = suggestion # CA2251: 使用 “string.Equals” dotnet_diagnostic.CA2251.severity = suggestion -csharp_style_prefer_primary_constructors = true:suggestion + +csharp_style_prefer_primary_constructors = false:none [*.vb] #### 命名样式 #### diff --git a/src/Snap.Hutao/Snap.Hutao.Test/PlatformExtensions/DependencyInjectionTest.cs b/src/Snap.Hutao/Snap.Hutao.Test/PlatformExtensions/DependencyInjectionTest.cs index f0026e20..0075610c 100644 --- a/src/Snap.Hutao/Snap.Hutao.Test/PlatformExtensions/DependencyInjectionTest.cs +++ b/src/Snap.Hutao/Snap.Hutao.Test/PlatformExtensions/DependencyInjectionTest.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; using System; namespace Snap.Hutao.Test.PlatformExtensions; @@ -11,6 +12,7 @@ public sealed class DependencyInjectionTest .AddSingleton() .AddScoped() .AddTransient(typeof(IGenericService<>), typeof(GenericService<>)) + .AddLogging(builder => builder.AddConsole()) .BuildServiceProvider(); [TestMethod] @@ -41,6 +43,13 @@ public sealed class DependencyInjectionTest } } + [TestMethod] + public void LoggerWithInterfaceTypeCanBeResolved() + { + Assert.IsNotNull(services.GetService>()); + Assert.IsNotNull(services.GetRequiredService().CreateLogger(nameof(IScopedService))); + } + private interface IService { Guid Id { get; } diff --git a/src/Snap.Hutao/Snap.Hutao.Test/Snap.Hutao.Test.csproj b/src/Snap.Hutao/Snap.Hutao.Test/Snap.Hutao.Test.csproj index 6bc344e4..a8393dff 100644 --- a/src/Snap.Hutao/Snap.Hutao.Test/Snap.Hutao.Test.csproj +++ b/src/Snap.Hutao/Snap.Hutao.Test/Snap.Hutao.Test.csproj @@ -12,9 +12,10 @@ + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml.cs b/src/Snap.Hutao/Snap.Hutao/App.xaml.cs index d7f33573..c1d79aa1 100644 --- a/src/Snap.Hutao/Snap.Hutao/App.xaml.cs +++ b/src/Snap.Hutao/Snap.Hutao/App.xaml.cs @@ -10,8 +10,6 @@ using Snap.Hutao.Core.LifeCycle.InterProcess; using Snap.Hutao.Core.Logging; using Snap.Hutao.Core.Shell; using System.Diagnostics; -using System.Text; -using static Snap.Hutao.Core.Logging.ConsoleVirtualTerminalSequences; namespace Snap.Hutao; diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBaseBuilder.cs b/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBaseBuilder.cs new file mode 100644 index 00000000..23bcc271 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBaseBuilder.cs @@ -0,0 +1,10 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +namespace Snap.Hutao.Control.Builder.ButtonBase; + +internal class ButtonBaseBuilder : IButtonBaseBuilder + where TButton : Microsoft.UI.Xaml.Controls.Primitives.ButtonBase, new() +{ + public TButton Button { get; } = new(); +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBaseBuilderExtension.cs b/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBaseBuilderExtension.cs new file mode 100644 index 00000000..58ad45a5 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBaseBuilderExtension.cs @@ -0,0 +1,25 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Snap.Hutao.Core.Abstraction.Extension; + +namespace Snap.Hutao.Control.Builder.ButtonBase; + +internal static class ButtonBaseBuilderExtension +{ + public static TBuilder SetContent(this TBuilder builder, object? content) + where TBuilder : IButtonBaseBuilder + where TButton : Microsoft.UI.Xaml.Controls.Primitives.ButtonBase + { + builder.Configure(builder => builder.Button.Content = content); + return builder; + } + + public static TBuilder SetCommand(this TBuilder builder, ICommand command) + where TBuilder : IButtonBaseBuilder + where TButton : Microsoft.UI.Xaml.Controls.Primitives.ButtonBase + { + builder.Configure(builder => builder.Button.Command = command); + return builder; + } +} \ No newline at end of file diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBuilder.cs b/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBuilder.cs new file mode 100644 index 00000000..6274b5d0 --- /dev/null +++ b/src/Snap.Hutao/Snap.Hutao/Control/Builder/ButtonBase/ButtonBuilder.cs @@ -0,0 +1,8 @@ +// Copyright (c) DGP Studio. All rights reserved. +// Licensed under the MIT license. + +using Microsoft.UI.Xaml.Controls; + +namespace Snap.Hutao.Control.Builder.ButtonBase; + +internal sealed class ButtonBuilder : ButtonBaseBuilder