Próbuję zmienić kod, aby użyć wtyczki zależności .NET Core w usługach mapowania w pliku startup.cs. Chciałbym wstawić tutaj IRequestDatabaseLogger zamiast go wymyślać. Wymaga to jednak kontekstu w konstruktorze. Jak mogę to osiągnąć? Czy jest to nawet możliwe bez frameworka DI, czy nawet wtedy?Wstrzykiwanie programu rejestrującego z zależnościami konstruktorów
public class ActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var requestDatabaseLogger = new RequestDatabaseLogger(context);
long logId = requestDatabaseLogger.Log();
context.HttpContext.AddCurrentLogId(logId);
base.OnActionExecuting(context);
}
}
Zapobiegaj wykonywaniu czynności przydatnych w atrybutach. Atrybuty powinny być pasywne, jak wyjaśniono [tutaj] (http://blog.ploeh.dk/2014/06/13/passive-attributes/) i [tutaj] (https://www.cuttingedge.it/blogs/steven /pivot/entry.php?id=98). – Steven
Powiązane: https://stackoverflow.com/a/29916075/264697 – Steven
Myślę, że masz na myśli * Unikaj * nie zapobiegaj (robiąc coś użytecznego) ... – ssmith