Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 注射';这';带着尼尼特_C#_Ninject - Fatal编程技术网

C# 注射';这';带着尼尼特

C# 注射';这';带着尼尼特,c#,ninject,C#,Ninject,我刚开始使用Ninject,我有一个问题。假设我有一个TaxCalculator类,它具有带Sale参数的构造函数。然后我和ITaxCalculator会员一起上销售课。通常,我会在Sale construcor中创建TaxCalculator实例,并将“this”作为参数 public class Sale { private ITaxCalculator taxCalculator; public Sale() { this.taxCalculato

我刚开始使用Ninject,我有一个问题。假设我有一个TaxCalculator类,它具有带Sale参数的构造函数。然后我和ITaxCalculator会员一起上销售课。通常,我会在Sale construcor中创建TaxCalculator实例,并将“this”作为参数

public class Sale
{
    private ITaxCalculator taxCalculator;

    public Sale()
    {
        this.taxCalculator = new TaxCalculator(this);
    }
}

public class TaxCalculator : ITaxCalculator
{
    private Sale sale;
    public TaxCalculator(Sale sale)
    {
        this.sale = sale;
    }
}
使用Ninject是否可以实现这一点?下面的代码显然不起作用

public class Sale
{
    private ITaxCalculator taxCalculator;

    [Inject]
    public void SetTaxCalculator(ITaxCalculator taxCalculator)
    {
        this.taxCalculator = taxCalculator;
    }
}

....
using (IKernel kernel = new StandardKernel())
        {
            Sale sale = null;

            kernel.Bind<ITaxCalculator>()
                  .To<TaxCalculator>()
                  .WithConstructorArgument("sale", sale);

            sale = kernel.Get<Sale>();
        }
公共类销售
{
私人ITaxCalculator taxCalculator;
[注入]
公共无效SetTaxCalculator(ITaxCalculator taxCalculator)
{
this.taxCalculator=taxCalculator;
}
}
....
使用(IKernel kernel=new-StandardKernel())
{
销售=空;
kernel.Bind()
.至()
.与施工方辩论(“销售”,销售);
sale=kernel.Get();
}

我希望Ninject在调用Sale构造函数之后调用SetTaxCalculator方法。

您可以使用属性注入来实现

但是有这样的循环依赖性意味着你的设计有一些缺陷。我强烈建议修复这个结构问题,这样只有一个类需要引用另一个类


e、 g.为什么需要税务计算器作为销售参考?让sale调用计算器并传递所有必需的信息。例如,
CalculateTax(产品)

感谢您的回复,在我的应用程序中,我遇到了比我在这里作为示例编写的更复杂的问题。不过,我会考虑你的建议。财产注入可能就是我想要的,谢谢。