相当于 Ninject 的 WhenInjectedInto

Lightinject Equivalent of Ninject's WhenInjectedInto

LightInject 是否具有与 Ninject 的 WhenInjectedInto() 等效的方法? (Ninject - Contextual Binding)

例如,我有两个 类,比方说 MicrosoftOfficeLibreOffice,它们实现了一个接口 IOfficeSuite。另外两个 类、WindowsLinux,实现另一个接口 IOperatingSystem。后一个接口依赖于IOfficeSuite.

我想根据上下文决定实例化哪个办公套件。因此,如果 LightInject 将 IOfficeSuite 实现注入到 Windows 对象中,它应该选择 MicrosoftOffice;如果它是一个 Linux 对象,它应该注入一个 LibreOffice 实例。

谢谢

你有你想要做什么的例子吗?

我能够使用 RegisterConstructorDependency:

解决它
Container.RegisterConstructorDependency((factory, parameterInfo) => DecideImplementationByDeclaringType(factory, parameterInfo));

private static IInterface DecideImplementationByDeclaringType(IServiceFactory factory, ParameterInfo parameterInfo)
    {
        var declaringType = parameterInfo.Member.DeclaringType;

        if (declaringType == typeof (SomeClass))
        {
            return factory.GetInstance<IInterface >("OtherImplementation");
        }
        return factory.GetInstance<IInterface >("DefaultImplementation");
    }