没有代码隐藏的Razor组件的类名是什么



我有一个剃刀组件,我想添加日志记录。我应该使用什么类名?当我需要这样做时,我是否必须使用代码隐藏?

假设我的组件名为MyRazor.razor

@code {
[Inject]
public ILogger<MYCLASS> Logger { get; set; }
}

MyRazor.razor

@code {
[Inject] public ILogger<MyRazor> Logger { get; set; }
}

Razor从文件名派生类名。

一种更好的方法,不需要为所有组件注入单独的记录器。

services.AddScoped<ILogger, Logger<LoggingBroker>>();
services.AddScoped<ILoggingBroker, LoggingBroker>();
public class LoggingBroker : ILoggingBroker
{
private readonly ILogger logger;
public LoggingBroker(ILogger logger) => this.logger = logger;
public void LogCritical(Exception exception) =>
this.logger.LogCritical(exception, exception.Message);
public void LogDebug(string message) => this.logger.LogDebug(message);
public void LogError(Exception exception) =>
this.logger.LogError(exception, exception.Message);

public void LogInformation(string message) => this.logger.LogInformation(message);
public void LogTrace(string message) => this.logger.LogTrace(message);
public void LogWarning(string message) => this.logger.LogWarning(message);
}

然后注入你的ILoggingBroker,我用它来允许单元测试。

@code {
[Inject] 
public ILoggingBroker Logger { get; set; }
}

关于:

当我需要做这个时,我必须使用代码隐藏吗

没有.razor生成的类不需要代码隐藏。

注意:如果需要,我可以提供ILoggingBroker接口,但只是从提供的类中提取它。

相关内容

  • 没有找到相关文章

最新更新