在Blazor客户端中,如何为接口创建组件?

时间:2019-12-20 11:52:59

标签: .net-core blazor

从可重用性的角度来看,我想为接口创建组件。因此,我将其与其他具体对象一起使用。

例如,界面是这样的

interface ICalculation
    {
        double Calculate();
    }

“测试”组件为

<button @onclick="(() => SetResult())">Set</button>
@result

@code{
double result;
ICalculation Calculation;
void SetResult()
{
result = Calculation.Calculate();
}

}

在其他组件/页面的其他地方,我有类似的东西

<Test  inject CalculationA />
<Test  inject CalculationB />

所以我想将不同的计算注入到该组件的不同实例中。我怎么能得到这个?

我认为使用网络核心的依赖注入,但这是为了为接口注入一个对象。 为什么重要?它可以帮助我覆盖对api的请求,例如admin和user的请求不同,但是它们看到的页面结构相同。

1 个答案:

答案 0 :(得分:1)

在“测试”组件中,将其设置为常规参数:

[Parameter]  
public ICalculation Calculator { get; set; }

然后在“其他地方”

@inject CalculationA  CalculationA  
@inject CalculationB  CalculationB  

<Test  Calculator="CalculationA" />
<Test  Calculator="CalculationB" />

或用普通实例化(2x)替换那些'@inject'行,因为使用多种实现,您无论如何都无法在接口上执行DI。