LightInject确定要解析的类型?

时间:2015-03-13 00:37:45

标签: light-inject

我正在考虑从Ninject转移到更轻的(更快)Ioc框架。

我选择了LightInject并正在玩游戏,但无法找到如何执行以下操作:

在对RegisterConstructorDependency的调用中,我希望能够确定要解析的对象的类型。 Param信息为我提供了有关参数位置的所有信息。但我无法确定注射的目标。

尝试将字符串值注入构造函数时会出现问题。

一个例子:

public interface IService { void Go(); }

public class Impl1 : IService { 

  public Impl1(string needsA){ }

  public void Go(){ }

}

public class Impl2 : IService {

   public Impl1(string needsA, string needsB){ }

  public void Go(){ }

}

// Elsewhere
container.Register<IService, Impl1>();
container.Register<IService, Impl2>();
container.RegisterConstructorDependency<string>((factory, paramInfo) => ??? );

如何在构造函数arg的注册中确定正在解析哪个实现(Impl1或Impl2)。他们可能需要将不同的值传递给&#39; needsA&#39;。

LightInject可能无法提供此信息,我需要扩展搜索范围。

1 个答案:

答案 0 :(得分:0)

我是LightInject的作者。您可以通过paramInfo.Member.DeclaringType

获取正在解析的类型