循环参考和DI

时间:2014-04-10 10:02:38

标签: c# wcf ninject

我有一个名为Service1的wcf项目,它有一个Interface IActions

public interface IActions
{
    int DoSomething(int param);
}

public class Service1 : IService1
{
    private IActions actions;

    public Service1(IActions actions)
    {
        this.actions = actions;
    }

    public MyAction(int p)
    {
        return this.actions.DoSomething(p);
    }

}

然后我有其他实现IActions接口的项目,因此它引用了Service1

public class SomeClass : IActions
{
    public int DoSomething(int param)
    {
        return param*param;
    }
}

现在我想用ninject实现DI,并且这样做我正在做这个绑定

public class NinjectBindings : NinjectModule
{
    public override void Load()
    {
        Bind<IActions>().To<SomeClass>();
        Bind<ServiceHost>().To<NinjectServiceHost>();
    }

}

这是不可能的,因为它引入了循环引用。 我究竟做错了什么? 我知道我应该有设计缺陷,但我很感激你可以向我展示。

1 个答案:

答案 0 :(得分:2)

您的示例中没有类的循环引用。你只需要循环汇编参考。介绍一些包含它们之间共享的接口的合同程序集,你会没事的。