Есть ли способ отключить заводские зависимости в LightInject? - PullRequest
0 голосов
/ 17 января 2020

У меня есть очень простой проект 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 автоматически предоставляет реализации для зависимостей, которые являются заводскими методами, как показано выше.

Я прочитал документацию, но не вижу способа отключить это.

Возможно ли:

  1. Отключите эту функцию полностью или:
  2. (предпочтительно) Включите ее только при явной регистрации. То есть примените это поведение явно к нужным классам, в противном случае отключите его (и сгенерируйте исключение).

В моем случае я хотел бы использовать только те зависимости, которые я явно определяю с фабрикой такие методы, как этот, и в противном случае выдают исключение, если явная регистрация не была настроена.

Спасибо за любую помощь, которую вы можете предоставить.

...