C# 使用restful web服务
我正在尝试使用一个接口,但我在这里遇到了一些困难。 我试图将其设置为内容页后面的xamrin列表视图C# 使用restful web服务,c#,xamarin,C#,Xamarin,我正在尝试使用一个接口,但我在这里遇到了一些困难。 我试图将其设置为内容页后面的xamrin列表视图 public class xxxApiClient : IApi { readonly string url = "http://localhost:81/ "; readonly IHttpService httpService; public xxxApiClient(IHttpService httpService) {
public class xxxApiClient : IApi
{
readonly string url = "http://localhost:81/ ";
readonly IHttpService httpService;
public xxxApiClient(IHttpService httpService)
{
this.httpService = httpService;
}
public Task<List<JobsList>> GetJobs() => httpService.Get<List<JobsList>>($"{url}JobsLists");
}
如何在方法setItemSource?中正确使用上面的get作业
我很难理解的一点就在这里
如何调用已在API客户端中创建的基本GetJobs方法
Task<List<JobsList>> IApi.GetJobs()
{
throw new NotImplementedException();
}
private Task SetItemSource()
{
JobListings.ItemsSource =await GetJobs();
}
}
但是我得到了下面的错误
严重性代码说明项目文件行抑制状态
错误CS0236字段初始值设定项无法引用非静态
字段、方法或属性
“JobsPage.httpService”xxxCallManagementAppMobile C:\Work\xxxCallAppDev\XamForms\xxxCallManagementApp\xxxCallManagementAppMobile\FuelCallManagementAppMobile\Views\JobsPage.xaml.cs 17处于活动状态
有人能解释为什么吗
编辑3
好的,我有点进一步,但仍然有一些问题。由于未等待main方法,我如何调用set SetItemSource
xxxApiClient _api ;
public JobsPage ()
{
InitializeComponent ()
SetItemSource();
}
private async Task SetItemSource()
{
JobListings.ItemsSource = await client.GetJobs();
}
假设
IApi
已映射到xxxApiClient
实现
尝试使用解析服务,以便在视图中使用该服务
public partial class JobsPage : ContentPage {
public readonly IApi client;
public JobsPage () {
InitializeComponent ();
client = DependencyService.Get<IApi>();
}
private async Task SetItemSource() {
JobListing.ItemsSource = await client.GetJobs();
//...
}
}
完整代码
public partial class JobsPage : ContentPage {
public readonly IApi client;
public JobsPage () {
InitializeComponent ();
//resolving client
client = DependencyService.Get<IApi>();
//subscribing to event
loadingData += onLoadingData;
//raising event
loadingData(this, EventArgs.Empty);
}
private async Task SetItemSource() {
JobListing.ItemsSource = await client.GetJobs();
//...
}
private event EventHandler loadingData = delegate { };
private async void onLoadingData(object sender, Eventargs args) {
JobListing.ItemsSource = await client.GetJobs();
}
}
public分部类作业页面:ContentPage{
公共只读IApi客户端;
公职人员{
初始化组件();
//解析客户端
client=DependencyService.Get();
//订阅活动
加载数据+=加载数据;
//募捐活动
加载数据(此为EventArgs.Empty);
}
专用异步任务SetItemSource(){
JobListing.ItemsSource=await client.GetJobs();
//...
}
private EventHandler loadingData=委托{};
私有异步void onLoadingData(对象发送方、事件args args){
JobListing.ItemsSource=await client.GetJobs();
}
}
尽管创建了自定义事件,但您也可以在视图的事件/事件处理程序上轻松地使用它
所有这些代码实际上都应该存在于视图模型中,然后在绑定上下文中绑定到视图。您的意思是“困难”而不是“延展性”吗?后者是一个词,但有一个非常具体的技术含义,这在这里很奇怪。我很犹豫是否要编辑,因为我想尊重你的单词选择。对不起,迈克,我拼写不好,请不要在我的问题中反对我。更正了错误,你也能将IApi注入内容页吗?是的,但这就是我难以理解的@Nkosi@DavidB我来看看。我建议您在发布时努力编写适当的代码示例,因为这些不完整的代码片段非常令人困惑。它们应该是一个
public partial class JobsPage : ContentPage {
public readonly IApi client;
public JobsPage () {
InitializeComponent ();
client = DependencyService.Get<IApi>();
}
private async Task SetItemSource() {
JobListing.ItemsSource = await client.GetJobs();
//...
}
}
private event EventHandler loadingData = delegate { };
private async void onLoadingData(object sender, Eventargs args) {
JobListing.ItemsSource = await client.GetJobs();
}
public partial class JobsPage : ContentPage {
public readonly IApi client;
public JobsPage () {
InitializeComponent ();
//resolving client
client = DependencyService.Get<IApi>();
//subscribing to event
loadingData += onLoadingData;
//raising event
loadingData(this, EventArgs.Empty);
}
private async Task SetItemSource() {
JobListing.ItemsSource = await client.GetJobs();
//...
}
private event EventHandler loadingData = delegate { };
private async void onLoadingData(object sender, Eventargs args) {
JobListing.ItemsSource = await client.GetJobs();
}
}