Ich beginne ein neues Projekt, unter Verwendung von DI (Habe mich für AutoFac entschieden)
Meine Projekt Struktur ist wie folgt aufgeteilt.
Ich habe ein Projekt "Database" und ein Project "Database.Contracts"
Ein Projekt "Logging" und ein Projekt "Logging.Contracts"
Ein Projekt "SharedDI"
Im SharedDI sind alle anderen Projekte verknüpft. Wobei in den Projekten "Database" und "Logging" nur die entsprechenden "Contracts" verbunden sind.
Soweit, so gut.
In meinem Logging Contract Projekt habe ich ein Interface deklariert, dass unter anderem die Methoden "EnterMethod" und "LeaveMethod" beinhalten.
Damit möchte ich eine schöne Struktur in die Log-File bekommen. Dazu habe ich nun eine Klasse geschrieben, die ich instanziere (dabei EnterMethod ausführe) & dann bei Dispose die "LeaveMethod". Damit ist es einfach, das Logging durchzuführen. Der Code dazu sieht so aus:
using System;
public sealed class LoggingService : IDisposable
{
IntelliSoft.Logging.Contracts.ILogger myLogger;
string myMethodName = String.Empty;
string mySourceFilePath = String.Empty;
public LoggingService(
IntelliSoft.Logging.Contracts.ILogger logger,
IntelliSoft.Logging.Contracts.Enums.TypeOfLoggingLevel? level = null,
[System.Runtime.CompilerServices.CallerMemberName] string methodName = "",
[System.Runtime.CompilerServices.CallerFilePath] string sourceFilePath = "")
{
myLogger = logger;
if(level != null)
myLogger.SetLoggingLevel = level.Value;
myMethodName = methodName;
mySourceFilePath = sourceFilePath;
myLogger.EnterMethod(myMethodName, mySourceFilePath);
}
public IntelliSoft.Logging.Contracts.ILogger Logger => myLogger;
public void Dispose() { myLogger.LeaveMethod(myMethodName, mySourceFilePath); }
}
Das Problem, dass ich hier habe ist, dass ich diesen Code aber in allen Projekten "kopieren" müsste, damit er funktioniert (oder per File-Link) Das scheint mir aber keine saubere Lösung zu sein!? Kann mir bitte jemand sagen, wie ich das richtig mache, dass dieser Code überall Gültigkeit hat und die Regeln der DI nicht verletzt.
DANKE im Voraus