【发布时间】:2022-12-18 08:53:06
【问题描述】:
我知道这个问题可能是无稽之谈,但我已经思考了一段时间。我正在开发一个 Xamarin Forms 应用程序,它可以在 Windows 和 Android 上运行,并且它们共享大部分代码。但是,由于某些原因,有一个特定的页面需要特定于平台(因为 UI 元素分布使应用程序看起来很奇怪)。随着代码行数的增加,而且它们几乎相同,我想到了创建一个单独的脚本来处理两个页面的逻辑,我只需从每个页面调用这些新方法即可。问题来了,因为我想修改一些 UI 元素(我之前为每个 UI 元素创建了一些 getter),并且由于每个页面都有不同的类名,比如 Page1 和 Page2,有什么办法可以根据运行应用程序的平台,在运行时设置一个可以采用 Page1 或 Page2 类型的通用变量?
我试过的
我尝试过共享项目和编译指令
#if WINDOWS_UWP
...
#elif ANDROID
...
#endif
但是我不知道是我不知道如何正确使用它,还是根本不起作用。在编译时,它表示此通用变量没有属于 Page1 和 Page2 类的任何变量的定义。
我的目标是拥有这样的东西
class Page1{
int SameVariableName;
}
class Page2{
int SameVariableName
}
class GenericClass{
//Check if Platform is Windows or Android
if (Windows) { Page1 pageVariable = new Page1();}
else if (Android) { Page2 pageVariable = new Page2();}
pageVariable.SameVariableName = (...);
}
问题是,由于 pageVariable 分配直到运行时才完成,它会产生大量编译错误,例如 pageVariable 不包含 SameVariableName 的定义
非常感谢您阅读本文并试图帮助我
【问题讨论】:
-
创建两个页面都继承的公共接口
标签: c# android xamarin.forms uwp conditional-compilation