using System.Threading.Tasks; namespace System.Application.Services.Implementation { /// public abstract class TelephonyServiceImpl : ITelephonyService { readonly IPermissions pf; readonly IPermissions.IGetPhoneNumber p1; public TelephonyServiceImpl(IPermissions pf, IPermissions.IGetPhoneNumber p1) { this.pf = pf; this.p1 = p1; } /// /// 由特定平台实现的获取手机号码 /// /// protected abstract string? PlatformGetPhoneNumber(); /// /// 由特定平台实现的检查权限后获取手机号码 /// /// protected virtual async Task PlatformGetPhoneNumberAsync() { var status = await pf.CheckAndRequestAsync(p1); if (status.IsOk()) { return PlatformGetPhoneNumber(); } return null; } public async Task GetPhoneNumberAsync() { var phoneNumber = await PlatformGetPhoneNumberAsync(); return phoneNumber; } } }