循环引用和DI

本文关键字:DI 引用 循环 | 更新日期: 2023-09-27 17:57:53

我有一个名为Service1的wcf项目,它有一个接口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>();
    }
}

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

循环引用和DI

您的示例中没有类的循环引用。您只有循环程序集引用。引入一些包含它们之间共享接口的合同程序集,您就可以了。