Mam następujący interfejs:Korzystanie StructureMap z log4net owijki
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);
}
i następujący realizacji:
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...
}
Mój pomysł polegał na użyciu StructureMap instancję klasy Log4netLogger z użyciem rodzaju klasa, która zrobiła logowanie. Jednak nie mogę dla mojego życia dowiedzieć się, jak przekazać typ wywołującej klasy do structuremap, tak aby mogła zostać przekazana do konstruktora implementacji rejestrowania. Jakakolwiek rada, jak to zrobić (lub lepszy sposób) byłaby najbardziej doceniana.
Potrzeba dla fabryk podczas korzystania z mapy struktury zwykle można wyeliminować za pomocą metody "ConstructedBy" z lambda jako metodą fabryczną. http://structuremap.sourceforge.net/InstanceExpression.htm#section13 – KevM