Ho la seguente interfaccia:Utilizzando StructureMap con log4net involucro
public interface ILogger
{
void Debug(string message, params object[] values);
void Info(string message, params object[] values);
void Warn(string message, params object[] values);
void Error(string message, params object[] values);
void Fatal(string message, params object[] values);
}
e la seguente implementazione:
public class Log4netLogger : ILogger
{
private ILog _log;
public Log4netLogger(Type type)
{
_log = LogManager.GetLogger(type);
}
public void Debug(string message, params object[] values)
{
_log.DebugFormat(message, values);
}
// other logging methods here...
}
La mia idea era quella di utilizzare StructureMap creare un'istanza della classe Log4netLogger con l'utilizzo del tipo della classe che ha fatto il logging. Tuttavia, non posso per la vita di me capire come passare il tipo della classe chiamante a structuremap in modo che possa essere passato al costruttore dell'implementazione della registrazione. Qualunque consiglio su come farlo (o un modo migliore) sarebbe più apprezzato.
L'esigenza di utilizzare le fabbriche quando si utilizza la structuremap può essere generalmente eliminata utilizzando un "ConstructedBy" con un lambda come metodo di fabbrica. http://structuremap.sourceforge.net/InstanceExpression.htm#section13 – KevM