有没有办法在LightInject中禁用工厂依赖关系?

时间:2020-01-16 22:35:55

标签: light-inject

我有一个非常简单的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. (首选)仅通过显式注册启用它。也就是说,将这种行为明确地应用于我想要的类,否则,请禁用它(并引发异常)。

在我的情况下,我只想利用我用诸如此类的工厂方法显式定义的依赖项,否则,如果未配置显式注册,则抛出异常。

感谢您提供的任何帮助。

0 个答案:

没有答案