C#告诉我:

无法解析符号‘InvokeAsync’

在下面的await this.onClick.InvokeAsync(this.targetPerson);行代码中:

public partial class PersonCard : Microsoft.AspNetCore.Components.ComponentBase
{

  [Microsoft.AspNetCore.Components.Parameter] 
  public required CommonSolution.Entities.Person targetPerson { get; set; }

  [Microsoft.AspNetCore.Components.Parameter]
  public Microsoft.AspNetCore.Components.EventCallback<CommonSolution.Entities.Person>? onClick { get; set; } = null;

  [Microsoft.AspNetCore.Components.Parameter] 
  public string rootElementTag { get; set; } = "div";

  [Microsoft.AspNetCore.Components.Parameter]
  public string? spaceSeparatedAdditionalCSS_Classes { get; set; } = null;
  
  
  private async System.Threading.Tasks.Task onClickOutermostElement()
  {

    if (this.onClick is null)
    {
      return;
    }
    
    
    await this.onClick.InvokeAsync(this.targetPerson);
    
  }

}

如果使onClick不可为空并删除空判断,则编译将起作用. 我做错了什么?

推荐答案

EventCallbackreadonly struct:在C#中不能为空的值类型.

您可以将其设置为可以为空的类型,但参数没有任何意义.您在代码中在可空类型和普通类型之间切换,这是编译器不喜欢的.

如果要判断是否已将委托分配给该参数,可以判断HasDelegate属性.

下面是一个例子,在这个例子中,如果它没有委托,我相当强烈地抛出一个异常.

<h3>CallbackComponent</h3>
<button class="btn btn-primary" @onclick="OnValueChanged">Get TimeStamp</button>

@code {
    [Parameter] public EventCallback<string> ValueChanged { get; set; }

    private async Task OnValueChanged()
    {
        if (!this.ValueChanged.HasDelegate)
            throw new Exception("Value changed must be assigned a delegate!");

        await ValueChanged.InvokeAsync($"Changed At {DateTime.Now.ToLongTimeString()}");
    }
}

Csharp相关问答推荐

如何打印已添加到List的Linq值,而不是C#中的:System.Collections.Generic.List ' 1[System.Int32]?

如何将字节数组转换为字符串并返回?

获取ASP.NET核心身份认证cookie名称

始终保留数组中的最后N个值,丢弃最老的

SignalR客户端不会打印队列位置'

.NET 6控制台应用程序,RabbitMQ消费不工作时,它的程序文件中的S

为什么在使用动态obj+类obj时会调用串联?

在ASP.NET Core Web API项目中通过中间件修改`Request.Path`不会更改使用的控制器/操作

WinForms在Linux上的JetBrains Rider中的应用

调用Task.Run()与DoSomethingAsync()有什么不同?

C#带主体的主构造函数?

如何在.NET MAUI中最大化GraphicsView的大小?

如何让游戏对象在切换场景时被销毁,但在开始新游戏时重新锁定

如何强制新设置在Unity中工作?

JSON串行化程序问题.SQLite中的空值

Visual Studio,Docker容器-容器调用:连接被拒绝

C#中使用ReadOnlySpan的泛型类型推理

如何在.NET Core 8中自定义标识用户模型

try 访问字典中的模拟对象时引发KeyNotFoundException

外部应用&&的LINQ;左外部连接&类似于PostgreSQL的查询