【发布时间】:2020-10-26 11:20:55
【问题描述】:
我有一个项目。我正在研究用户可以将多个帐户绑定到他/她的个人资料的位置。但是,要获取帐号和帐户名称,需要调用一个端点。要获取每个帐号的帐户余额,需要调用另一个端点。 现在这是我的问题。根据设计,我需要在每张卡上放置帐号和帐户余额,因为帐户可以多个。 所以,我的问题是,我怎样才能最好地做到这一点?拨打电话以获取帐户详细信息,然后选择每个帐号以进行另一个调用,该电话将返回该特定帐号的帐户余额。
这是我的模型:
public class MyAccount
{
public string linkerId { get; set; }
[JsonProperty("accountDetails")]
public AccountDetails Details { get; set; }
public AcctUserDetails acctUserDetails { get; set; }
public LinkedBy linkedBy { get; set; }
public string requestTimestamp { get; set; }
}
public class Account
{
[JsonProperty("payload")]
public List<MyAccount> Accounts { get; set; }
}
public class AccountDetails
{
string acctBalance;
[JsonProperty("accountNumber")]
public string AccountNumber { get; set; }
[JsonProperty("accountName")]
public string AccountName { get; set; }
public string phoneNumber { get; set; }
public string email { get; set; }
[JsonProperty("accountType")]
public string AccountType { get; set; }
public string Balance
{
get
{
foreach (var accountNumm in AccountNumber)
{
MessagingCenter.Send<object, string>(this, "acctNo", AccountNumber);
}
MessagingCenter.Subscribe(this, "myAcctNo", (object obj, string theBalance) =>
{
Device.BeginInvokeOnMainThread(() =>
{
acctBalance = theBalance;
});
});
var newBall = acctBalance;
return newBall;
}
set { Balance = value; }
}
}
此外,My ViewModel 调用 API 以获取所有帐户。
private async void LoadMyAccounts()
{
IsBusy = true;
HttpClient client = new HttpClient();
var url = Constant.GetLinkedAccountsUrl;
var response = await client.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
Account userAccounts = JsonConvert.DeserializeObject<Account>(json);
var sorted = userAccounts.Accounts;
//getTrans = userTransactions
var allAccounts = new ObservableCollection<MyAccount>(sorted);
AccountsData = allAccounts;
IsBusy = false;
}
然后我有一个服务类,它发送和订阅从模型发送的帐号。 这是我的服务类:
public async void GetBalance()
{
HttpClient client = new HttpClient();
var url = Constant.GetAcctBalanceUrl + acctBalance;
var response = await client.GetAsync(url);
var json = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
var pro = JsonConvert.DeserializeObject<AcctModel>(json);
var newBal = pro.Balances;
Constant.MyBalance = newBal;
var acctNo = newBal.accountBalance;
MessagingCenter.Send<object, string>(this, "myAcctNo", acctNo);
}
}
【问题讨论】:
-
您可以提前一次获得所有余额。然后将其保存到全局属性中。
-
但是要获得账户余额,我需要账号作为端点,账户余额需要账号作为参数
-
我的意思是提前获取它们而不是在get方法中调用它。
-
您能否解释得更好或添加一个示例?我好像没听懂你
-
您需要等待您的任务以获取所有帐户详细信息。该任务完成后,启动另一个任务以获取帐户余额。完成该任务后,将余额插入帐户详细信息。一切完成后,将其展示给用户。您需要运行某种加载指示器,这样用户就不会在屏幕上点击以使某些事情发生。
标签: c# xamarin xamarin.forms messagingcenter