我遇到了以下问题。我尝试从 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] 分部方法“DeviceOrientationService.GetOrientation()”必须具有实现部分,因为它具有可访问性修饰符。
有人知道我错过了什么吗?
最佳答案
所以问题是您需要在所有平台类上为您的抽象方法创建一个实现,以便它能够构建,因为您的目标是多个平台。
因此,就像您在 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 代码。
关于c# - .NET MAUI 和 Jetbrains Rider 中平台特定代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74094366/