作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 Web API 中使用的简单类,如下所示。如您所见,它有一个通过属性应用的验证器
[CustomerNameValidator]
public class Customer
{
public string CustomerName { get; set; }
}
验证器类如下所示
public class CustomerNameValidatorAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
Customer customer = (Customer)validationContext.ObjectInstance;
if ( string.IsNullOrEmpty(customer.CustomerName))
{
return new ValidationResult("Invalid customer Name");
}
return ValidationResult.Success;
}
}
我想在 IsValid 方法中添加一些日志记录。我正在使用 Startup 类设置的其他地方使用日志记录,如下所示。
public Startup(IHostingEnvironment env, ILoggerFactory loggerFactory)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
loggerFactory.AddNLog();
}
如何在验证属性类中使用记录器?
最佳答案
ValidationContext
是 populated使用 HttpContext
的 RequestServices
属性(IServiceProvider
实例)。这意味着您可以使用 GetService
method 从中解析服务在 ValidationContext
上。
例如:
var logger = (ILogger<CustomerNameValidatorAttribute>)validationContext.GetService(typeof(ILogger<CustomerNameValidatorAttribute>));
关于c# - 从验证器类记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41131074/
我刚开始使用 Dagger 2,想知道与我目前用来实现依赖注入(inject)的技术相比,它有什么优势。 目前,为了实现 DI,我创建了一个具有两种风格的项目:mock 和 prod。在这些风格中,我
我是一名优秀的程序员,十分优秀!