Так мы регистрируем классы, используя Autofac
builder.Register(c => new FileLogger(ILogger)).As<ILogger>().SingleInstance();
var sizeinkb= Convert.ToInt32(configuration.GetValue<string>("Settings:SizeInKb"));
builder.RegisterType<Broker>().As<IBroker>().WithParameter("size", sizeinkb).SingleInstance();
builder.RegisterType<MainClass>().As<IMainClass>().SingleInstance();
var container = builder.Build();
ContainerFactory.SetContainer(container);
Вот наш класс
public class MainClass:IMainClass
{
public MainClass(IBroker broker,ILogger logger)
{
_broker = broker,
_logger = logger
}
}
Вот класс брокера
public class Broker:IBroker
{
public Broker(ILogger logger,
int size)
{
}
}
Autofac.Core.DependencyResolutionException
HResult = 0x80131500
Сообщение = Произошла ошибка во время активации определенной регистрации. Смотрите внутреннее исключение для деталей. Регистрация: Activator = MainClass (ReflectionActivator), Services = [MyProject.IMainClass], Lifetime = Autofac.Core.Lifetime.RootScopeLifetime, Sharing = Shared, Ownership = OwnedByLifetimeScope ---> Ни один из конструкторов не найден с помощью 'Autofac.Core.Activators .Reflection.DefaultConstructorFinder 'для типа' MyProject.MainClass 'может быть вызван с доступными службами и параметрами:
Не удается разрешить параметр «MyProject.IBroker broker» конструктора «Void .ctor (MyProject.IBroker, MyProject.ILogger)».