У меня есть очень простой проект xUnit, демонстрирующий мою проблему здесь:
https://github.com/Mike-EEE/LightInject.FactoryDependencies
Обратите внимание, что тест проходит поскольку он демонстрирует поведение LightInject по умолчанию.
Вот полный код рассматриваемого теста:
[Fact]
public void Test1()
{
var container = new ServiceContainer();
container.RegisterSingleton<Service>();
var instance = container.GetInstance<Service>();
instance.Should().NotBeNull();
instance.Dependency.Target.Should().BeOfType<ServiceContainer>();
}
public sealed class Service
{
public Service(Func<int, DateTime> dependency) => Dependency = dependency;
public Func<int, DateTime> Dependency { get; }
}
Может показаться, что по умолчанию LightSwitch автоматически предоставляет реализации для зависимостей, которые являются заводскими методами, как показано выше.
Я прочитал документацию, но не вижу способа отключить это.
Возможно ли:
- Отключите эту функцию полностью или:
- (предпочтительно) Включите ее только при явной регистрации. То есть примените это поведение явно к нужным классам, в противном случае отключите его (и сгенерируйте исключение).
В моем случае я хотел бы использовать только те зависимости, которые я явно определяю с фабрикой такие методы, как этот, и в противном случае выдают исключение, если явная регистрация не была настроена.
Спасибо за любую помощь, которую вы можете предоставить.