【问题标题】:Problem with platform specific code in .NET MAUI and Jetbrains Rider.NET MAUI 和 Jetbrains Rider 中平台特定代码的问题
【发布时间】:2022-12-19 18:37:07
【问题描述】:

我有以下问题。我尝试从 Microsoft 教程调用 .NET MAUI 中的平台特定代码。 https://learn.microsoft.com/en-us/dotnet/maui/platform-integration/invoke-platform-code

这里的问题是它可以用 Visual Studio 编译和构建,但是用 Jetbrains 的 Rider 就不能编译。 我收到以下错误消息:

DeviceOrientationService.cs(5, 38): [CS8795] Partial method 'DeviceOrientationService.GetOrientation()' must have an implementation part because it has accessibility modifiers.

任何人都知道我错过了什么?

【问题讨论】:

  • 告诉我你当前的代码,我也许可以帮助你 !!!!
  • 嘿,谢谢! :) 这是我的项目github.com/Cruik/MAUITest
  • 检查下面的答案:)

标签: c# rider .net-maui


【解决方案1】:

所以问题是你需要在所有平台类上为你的抽象方法创建一个实现,因为你的目标是多个平台,所以它能够构建。

因此,就像您在 Android 和 iOS 平台上有一个实现一样,您也需要在其他平台上实现它。

还有另一种方法,你可以创建一个抽象方法,它的实现已经在其他平台上做了一些事情,所以假设这个方法只与 Android 和 iOS 相关,那么你可以在 this class 中做类似下面的事情:

public partial class DeviceOrientationService
{
 #if ANDROID || IOS
    public partial DeviceOrientation GetOrientation();
 #else
    public partial DeviceOrientation GetOrientation()
    {
         return DeviceOrientation.Undefiend;
    }
 #endif
}

此外,如果您不想支持 Tizen、Windows 或 MacCatalyst,您可以从 csproj 文件中删除它们的引用,然后您可以删除它们的平台文件夹,并且您不需要在所有应用程序中执行上述操作仅期望上述项目的 Android 和 iOS 代码。

【讨论】:

    猜你喜欢
    • 2022-10-24
    • 2016-01-12
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多