Ответ 1
Autofac ничего не предлагает, потому что Autofac создает компоненты в ответ на ResolveInstance, вы столкнулись с побочными эффектами конструктора и т.д.
Интеграционное тестирование - лучший способ решить эту проблему.
У меня есть группа типов, зарегистрированных в Autofac, и некоторые из зависимостей довольно глубоки. Есть ли встроенный способ проверить, что я могу разрешить все зарегистрированные типы? Я хочу быстро потерпеть неудачу при запуске приложения, а не через несколько минут частично.
Это то, что я сейчас делаю, и, похоже, работает, но мне все еще интересно, нет ли лучшего способа.
public void VerifyAllRegistrations()
{
foreach (IComponentRegistration registration in _container.ComponentRegistrations)
{
bool isNewInstance;
registration.ResolveInstance(_container, new Parameter[0], new Disposer(), out isNewInstance);
}
}
private class Disposer : IDisposer
{
public void Dispose()
{
// no-op
}
public void AddInstanceForDisposal(IDisposable instance)
{
instance.Dispose();
}
}
Autofac ничего не предлагает, потому что Autofac создает компоненты в ответ на ResolveInstance, вы столкнулись с побочными эффектами конструктора и т.д.
Интеграционное тестирование - лучший способ решить эту проблему.