我在 program.cs 文件中将服务注册为 Singleton,如下所示。
builder.Services.AddSingleton<ITest, Test>();
Run Code Online (Sandbox Code Playgroud)
如果我在program.cs中请求它的实例
var testService = builder.Services.BuildServiceProvider()
.GetRequiredService<ITest>();
Run Code Online (Sandbox Code Playgroud)
它创建一个新对象,这是第一个对象,但是当我通过其他服务中的构造函数注入请求它时,它会再次创建一个新对象。它不应该返回在 Program.cs 中启动时创建的第一个对象吗?
注意:只有当我在 program.cs 中请求服务时才会出现此行为,而不是它返回相同的对象,即使我使用 IServiceProvider.GetRequiredService() 请求它;
我也在 dot net 5 Web api 中测试了相同的场景,其中我在Startu.cs 文件的 ConfigureServices 方法中注册服务
services.AddSingleton<ITest, Test>();
Run Code Online (Sandbox Code Playgroud)
并在像这样的配置方法中请求服务
var test = app.ApplicationServices.GetRequiredService<ITest>();
Run Code Online (Sandbox Code Playgroud)
当我在其他服务的构造函数中请求它时,它将返回相同的对象。
为什么?
c# dependency-injection asp.net-web-api asp.net-core-webapi .net-6.0
我正在使用 MudBlazor,它提供了一种通过定义 MudTheme 来管理主题的方法。例如
MudTheme MyCustomTheme = new MudTheme()
{
Palette = new Palette()
{
Primary = Colors.Blue.Default,
Secondary = Colors.Blue.Default,
AppbarBackground = "#FFFFFF",
TextPrimary = "#000000",
TextSecondary = "#FFFFFF",
}
};
Run Code Online (Sandbox Code Playgroud)
设置TextPrimary
颜色会将提供的值设置为 scss 变量--mud-palette-text-primary
,但不会将其应用于MudText
组件。
问题:我正在设置TextPrimary
和TextSecondary
in Palette
,但是当我使用 MudBlazor 文本组件时,它不会应用我提供的颜色。
<MudText Typo="Typo.h5">Application</MudText>
Run Code Online (Sandbox Code Playgroud)
注意: MudText 有一个 Color 属性,它接受Color enum
值但Color enum
没有TextPrimary
Value。
Color
MudBlazor 提供的枚举
public enum Color
{
Default = 0,
Primary = 1,
Secondary …
Run Code Online (Sandbox Code Playgroud)