Я предполагаю, основываясь на названии вашего вопроса, что ваша цель состоит в том, чтобы сконфигурировать вашу библиотеку из корня композиции, но не требовать, чтобы приложение-потребитель знало, как зарегистрировать все для нее.сделать это с помощью Autofac означает создать один или несколько модулей :
public class SecurityModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register<Sha256ConnectionEncryption>.As<IConnectionEncryption>();
// ...other security-related registrations...
}
}
Теперь приложение может просто зарегистрировать модуль:
// In composition root
builder.RegisterModule<SecurityModule>();
Чтобы зарегистрироватьРазличные реализации интерфейса, вы можете просто предоставить эту регистрацию после регистрации модуля.Autofac использует последний подход к регистрации, что означает, что вы можете изменить любое из решений по умолчанию, принятых модулем:
// In composition root
builder.RegisterModule<SecurityModule>();
builder.Register<Sha512ConnectionEncryption>().As<IConnectionEncryption>();
Это приведет к тому, что Sha512ConnectionEncryption
будет введено везде, где необходимо IConnectionEncryption
в приложении.