【问题标题】:Blazor Wasm - cannot convert from 'method group' to 'EventCallback'Blazor Wasm - 无法从“方法组”转换为“EventCallback”
【发布时间】:2021-07-08 14:05:09
【问题描述】:

我有一个运行正常的简单 Blazor Server 应用程序。

我正在尝试使用带有 dotnet 5 的 Blazor WebAssembly 创建一个等效的应用程序。

在工作应用程序中,我有一个 razor 组件,它使用户能够使用 BlazorFileUploader nuget 包上传文件

标记:

<InputFile multiple OnChange="HandleFileSelected"/>

后面的代码:

public async Task HandleFileSelected(IFileListEntry[] files)
        {
            if (!ValidateFiles(files, out _errorMsg))
            {
                return;
            }
etc...

当我尝试编译 wasm 应用程序时,出现以下错误

CS1503 参数 2:无法从“方法组”转换为“事件回调”

任何想法我做错了什么?

【问题讨论】:

    标签: c# blazor .net-5 blazor-webassembly blazor-client-side


    【解决方案1】:

    我认为OnChange eventcallback 不支持IFileListEntry[] 类型的参数

    尝试将您的代码更改为:

    public async Task HandleFileSelected(InputFileChangeEventArgs e)
    {
        var files = e.GetMultipleFiles();
    }
    

    【讨论】:

      【解决方案2】:

      乔纳斯是正确的;您的方法需要接受InputFileChangeEventArgs 而不是IFileListEntry[]。如果您在 Visual Studio 2019 中将鼠标悬停在 OnChange 上,您应该会看到如下内容:

      事件处理程序需要一个delegate EventCallback,它最多可以接受1 类型的InputFileChangeEventArgs 参数。将delegate 视为方法接口:您的IFileListEntry[] 声明与接口不匹配,因此您会收到错误。

      如果你检查InputFileChangeEventArgs,你可以看到如何获取文件:

      public async Task HandleFileSelected(InputFileChangeEventArgs args)
      {
          IReadOnlyList<Microsoft.AspNetCore.Components.Forms.IBrowserFile> files =
              args.GetMultipleFiles(args.FileCount);
          // ...
      

      【讨论】:

        【解决方案3】:

        感谢康纳和乔纳斯的回答。问题的原因是旧的 Blazor Server 应用程序是使用 .Net Core 3.1 构建的。这在 Microsoft.AspNetCore.Components.Forms 命名空间中不包含“InputFile”组件。这就解释了为什么我要求助于第 3 方“BlazorFileUploader”nuget 包。

        在构建新的 Blazor WebAssembly 应用程序时,我选择了 dotnet 5。问题是,标记现​​在将“InputFile”解析为 Microsoft.AspNetCore.Components.Forms 命名空间而不是 BlazorFileUploader 命名空间。

        所以,我可以通过以下两种方式之一进行修复:

        • 将标记完全限定为
        • 删除第 3 方 nuget 包并重构代码以利用 Microsoft 命名空间的 dotnet5 版本中现在提供的 InputFile 组件

        我决定选择这两个选项中的秒数。

        【讨论】:

          猜你喜欢
          • 2021-01-26
          • 2021-09-15
          • 2021-11-06
          • 2021-06-25
          • 2013-10-02
          • 1970-01-01
          • 2021-04-13
          • 2021-11-04
          • 2017-09-18
          相关资源
          最近更新 更多