Autofac寄存器类别

时间:2018-10-03 02:22:13

标签: c# autofac

我有一个依赖于记录器的类。如何注册以确保记录仪通过?

function insertHyphen(str) {
  var strArr = str.split('');
  var numArr = strArr.map(Number);
  for(var i = 0; i < numArr.length; i++) {
    if(numArr[i-1]%2===0 && numArr[i]%2===0) {
        numArr.splice(i, 0, '-');
    }
  }
  return numArr.join('');
}
insertHyphen('112233445566'); //'112-2334-4556-6'

1 个答案:

答案 0 :(得分:0)

这没什么大不了的,如果您没有其他的小东西。请考虑以下示例:

[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;
    }
}

希望有帮助。