[英]Autofac register class
我有一個依賴於記錄器的類。 如何注冊以確保記錄儀通過?
public class Files : IHttpHandler
{
public Files(ILogger logger)
{
Logger = logger;
fileService = new FileService(logger);
}
}
如果您沒有其他陷阱,這沒什么大不了的。 請考慮以下示例:
[Test]
public void PassLoggerToHandlersCtor()
{
// Arrange
var builder = new ContainerBuilder();
builder.RegisterType<Logger>().As<ILogger>();
builder.RegisterType<Files>().As<IHttpHandler>();
builder.RegisterType<FileService>().AsSelf();
var container = builder.Build();
// Act
var handler = container.Resolve<IHttpHandler>();
// Assert
Assert.IsInstanceOf<Files>(handler);
var files = (Files) handler;
Assert.IsInstanceOf<Logger>(files.Logger);
Assert.IsInstanceOf<Logger>(files.fileService.Logger);
}
public class Files : IHttpHandler
{
/// <summary>
/// Just for tests
/// </summary>
public ILogger Logger { get; }
/// <summary>
/// Just for tests
/// </summary>
public FileService fileService { get; }
/// <inheritdoc />
public bool IsReusable { get; }
public Files(ILogger logger)
{
Logger = logger;
fileService = new FileService(logger);
}
/// <inheritdoc />
public void ProcessRequest(HttpContext context)
{
}
}
public interface ILogger { }
public class Logger : ILogger { }
public class FileService
{
/// <summary>
/// Just for tests
/// </summary>
public ILogger Logger { get; }
public FileService(Program.ILogger logger)
{
Logger = logger;
}
}
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.