小编Joe*_*omp的帖子

将方法作为参数传递时,Blazor 中“@MethodName”和“MethodName”的区别?

我在 Blazor 中有一个组件,它接受方法作为参数。

<SuppliersTable Loader="@LoadS" LoaderO="@LoadO" Adder="@Add" Updater="@Update" Remover="@Remove" />

@code {
    async Task<List<Supplier>> LoadS() => (await ModelServiceS.GetAllAsync()).ToList();
    async Task<List<Operator>> LoadO() => (await ModelServiceO.GetAllAsync()).ToList();
    async Task<bool> Add(Supplier model) => await ModelServiceS.AddAsync(model);
    async Task<bool> Update(Supplier model) => await ModelServiceS.UpdateAsync(model);
    async Task<bool> Remove(Supplier model) => await ModelServiceS.RemoveAsync(model);
}
Run Code Online (Sandbox Code Playgroud)

但是如果你不把“@”放在方法名称前面,它会做一些完全不同的事情吗?编译器接受两种方式,这就是我问的原因。我有一种感觉,它使用“@”执行方法并将返回值作为参数传递,如果没有“@”,您只是引用父组件要调用的方法(这就是我想要的)。有人可以向我提供有关“@”用法的更多详细信息吗?

SuppliersTable 组件的参数类型如下:

[Parameter] public Func<Task<List<Supplier>>> Loader { get; set; }
[Parameter] public Func<Task<List<Operator>>> LoaderO { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Adder { get; set; }
[Parameter] public Func<Supplier, Task<bool>> Updater { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core blazor blazor-server-side

4
推荐指数
2
解决办法
148
查看次数

标签 统计

asp.net-core ×1

blazor ×1

blazor-server-side ×1

c# ×1