从可重用性的角度来看,我想为接口创建组件。因此,我将其与其他具体对象一起使用。
例如,界面是这样的
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的请求不同,但是它们看到的页面结构相同。
答案 0 :(得分:1)
在“测试”组件中,将其设置为常规参数:
[Parameter]
public ICalculation Calculator { get; set; }
然后在“其他地方”
@inject CalculationA CalculationA
@inject CalculationB CalculationB
<Test Calculator="CalculationA" />
<Test Calculator="CalculationB" />
或用普通实例化(2x)替换那些'@inject'行,因为使用多种实现,您无论如何都无法在接口上执行DI。