[英]Problem with abstract Page in Release build
我为我的 UWP 应用程序制作了一个抽象Page
: TestPage
。 这个页面包含一些抽象项目,在这个简化的例子中只是一个string
。
MVCE 可以在这里找到
C# 代码:
public abstract partial class TestPage : Page
{
public abstract string AbstractName { get; }
public TestPage()
{
InitializeComponent();
}
}
XAML:
<Page
x:Class="UWP_Test.TestPage"
...
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
Style="{StaticResource TitleTextBlockStyle}"
Text="{x:Bind AbstractName}"/>
</Grid>
</Page>
然后我制作了两个派生页面,或者更确切地说是类:
public sealed class TestPage1 : TestPage
{
public override string AbstractName => "TestPage1";
}
public sealed class TestPage2 : TestPage
{
public override string AbstractName => "TestPage2";
}
如果我现在尝试将Frame
导航到TestPage1
或TestPage2
,这将在DEBUG构建中工作,但在RELEASE构建中失败( System.AccessViolationException: 'Attempted to read or write protected memory.' )。 这与启用或禁用优化代码或.net 原生工具链无关。
对于我实际的 UWP 应用程序,我希望能够使用上述原理快速制作非常相似的页面,这些页面在一些方面有所不同,例如ItemTemplates
, Viewmodels 等。
我很感激任何可以在发布版本中使这项工作或如何解决此问题的线索(无需为每个派生页面创建单独的 XAML 文件,我已经在其他地方使用它并且正在发布)。
显然,我希望它的工作方式似乎在 Release 版本中不受支持,这似乎是由于 .xaml 和 .cs 文件为 Release 或 Debug 版本编译的方式。
现在我将使用多个.xaml 文件,但我会继续尝试找到一种方法来完成这项工作并防止很多完全相同的.xaml 代码(毕竟使用相同代码的多个副本要求问题某处)。
当我找到答案时,我会相应地更新这个答案。 (感谢 Hamed 和 Mikah 到目前为止的帮助)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.