如何在Ninject中将对象传递给父对象的构造函数?

时间:2013-05-25 10:16:41

标签: inversion-of-control ninject ioc-container ninject-2 ninject-extensions

我有一种情况需要确定传递给Ninject中父对象的参数类型。

以下是一个父,一个孩子和一个负责创建所有内容的ParentFactory的示例...

public interface IParentFactory
{
    Parent Create(IConfig config);
}

public interface IConfig
{
    // ...
}

public class ConfigForChildOfType1 : IConfig
{
   // ....
}

public class ConfigForChildOfType2 : IConfig
{
   // ....
}

public class Parent
{
    public Parent(IChild child)
    {
        ...
    }
}

public interface IChild
{
}

public class Child1 : IChild
{
    // Some stuff
}

public class Child2 : IChild
{
    // Some stuff
}

当绑定以创建Parent时,我已使用ToFactory方法绑定:

Bind<IParentFactory>().ToFactory();
Bind<Parent>().ToSelf();

这使得可以打电话:

var factory = kernel.Get<IParentFactory>();

......来我的工厂。

当我使用工厂时,我可以使用......

var parentInstance = factory.Create(new ConfigForChildOfType1()); // Bad example with "new", but anyway

现在 - 这是我的问题。当工厂创建Parent实例时,使用传递的配置,我希望根据配置类型创建子类型。

那么,我可以在创建IChild时查看调用父构造函数的参数 - 也就是说,我可以看到传递给工厂创建方法的配置类型?

0 个答案:

没有答案