小编Zub*_*ani的帖子

DI 单例服务实例化两次

我在 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

5
推荐指数
1
解决办法
1648
查看次数

如何在 MudBlazor 主题调色板中使用 TextPrimary、TextSecondary 颜色值

我正在使用 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组件。

问题:我正在设置TextPrimaryTextSecondaryin Palette,但是当我使用 MudBlazor 文本组件时,它不会应用我提供的颜色。

<MudText Typo="Typo.h5">Application</MudText>
Run Code Online (Sandbox Code Playgroud)

注意: MudText 有一个 Color 属性,它接受Color enum值但Color enum没有TextPrimaryValue。

ColorMudBlazor 提供的枚举

public enum Color
    {
        Default = 0,
        Primary = 1,
        Secondary …
Run Code Online (Sandbox Code Playgroud)

mudblazor

5
推荐指数
1
解决办法
4355
查看次数