Dado que da nulo, el valor no puede ser nulo. (Parámetro 'registrador') error. Incluso si se da una instancia del modelo, sigue siendo nulo
public class MyController : Controller { public MyController(ILogger<MyController> logger) { logger.LogInformation("Log Testing"); } public ActionResult List() { int Id = 5; MyModel model = new MyModel(null); model.GetItem(Id); return View("List", model); } } public class MyModal:BaseModel { private readonly ILogger<MyModal> _logger; public MyModel(ILogger<MyModel> logger) { this._logger = logger; } public MyModel GetItem (Int Id) { try { //My Code } catch(Exception e){ _logger.LogError(e.Message); } } }Según la sugerencia, edité mi pregunta.
Como se sugiere en los comentarios:
ILoggerFactory en MyController y guárdelo en una variable de campo (por ejemplo _loggerFactory ).MyModel en su método List : ILogger<MyModel> modelLogger = _loggerFactory.CreateLogger<MyModel>();MyModel : MyModel model = new MyModel(modelLogger);Ejemplo:
public class MyController { private readonly ILogger _logger; private readonly ILoggerFactory _loggerFactory; public MyController(ILogger<MyController> logger, ILoggerFactory loggerFactory) { _logger = logger; _loggerFactory = loggerFactory; } public ActionResult List() { int Id = 5; ILogger<MyModel> modelLogger = _loggerFactory.CreateLogger<MyModel>(); MyModel model = new MyModel(modelLogger); model.GetItem(Id); return View("List", model); } }