【发布时间】:2021-04-03 15:17:35
【问题描述】:
这是我拥有的一个基类:
public abstract class BaseContentPage : ContentPage
{
protected BaseContentPage(in IAnalyticsService analyticsService,
in IMainThread mainThread,
in bool shouldUseSafeArea = false)
{
MainThread = mainThread;
AnalyticsService = analyticsService;
this.DynamicResource(BackgroundColorProperty, nameof(BaseTheme.PageBackgroundColor));
On<iOS>().SetUseSafeArea(shouldUseSafeArea);
On<iOS>().SetModalPresentationStyle(UIModalPresentationStyle.FormSheet);
}
protected IAnalyticsService AnalyticsService { get; }
protected IMainThread MainThread { get; }
protected override void OnAppearing()
{
base.OnAppearing();
AnalyticsService.Track($"{GetType().Name} Appeared");
}
以后会这样使用:
public class SplashScreenPage : BaseContentPage
{
readonly Label _loadingLabel;
readonly Image _gitTrendsImage;
readonly FirstRunService _firstRunService;
readonly AppInitializationService _appInitializationService;
public SplashScreenPage(IMainThread mainThread,
FirstRunService firstRunService,
IAnalyticsService analyticsService,
AppInitializationService appInitializationService)
: base(analyticsService, mainThread)
{
}
protected override async void OnAppearing()
{
base.OnAppearing();
await ChangeLabelText(_statusMessageEnumerator.Current);
我的问题是我对同一件事的看法:
a) 在 Xamarin Forms 中以这种方式使用时,是否可以使用异步方法覆盖非异步方法?
b) 我知道 Xamarin 会调用普通的 OnAppearing,但它会以同样的方式调用异步 OnAppearing 吗?
【问题讨论】:
-
async 实际上并不是方法签名的一部分,因此它不会影响您覆盖基本方法的能力。 “OnAppearing”和“async OnAppearing”都可以工作
标签: c# xamarin xamarin.forms