Tôi có giao diện sau:Sử dụng StructureMap với log4net wrapper
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);
}
và thực hiện như sau:
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...
}
Ý tưởng của tôi là sử dụng StructureMap để nhanh chóng lớp Log4netLogger với việc sử dụng Type của lớp đã đăng nhập. Tuy nhiên, tôi không thể cho cuộc sống của tôi tìm ra cách để vượt qua loại của lớp gọi để structuremap để nó có thể được truyền cho constructor của việc thực hiện đăng nhập. Bất kỳ lời khuyên nào về cách làm điều đó (hoặc một cách tốt hơn) sẽ được đánh giá cao nhất.
Sự cần thiết cho các nhà máy khi sử dụng structuremap thường có thể được loại bỏ bằng cách sử dụng "ConstructedBy" với lambda làm phương pháp nhà máy. http://structuremap.sourceforge.net/InstanceExpression.htm#section13 – KevM