我正在创建一个Xamarin应用程序,我必须在移动设备上将主数据填充到sqlite数据库中。
我是OOPS和Xamarin的新手
我有多个请求要从WebApi获取数据。我需要做的请求是50多个获取信息的电话。
现在,我需要编写异步通用代码来实现这一目标。
例如:我必须为EmployeeMaster,Company Master等填充数据。
我的通用代码应该能够识别要调用的URL以及必须返回的对象。我的正常代码如下所示
唯一不同的数据是RestUrl和TodoItem
public async Task<List<TodoItem>> RefreshDataAsync()
{
Items = new List<TodoItem>();
RestUrl = http://developer.xamarin.com:8081/api/todoitems{0}
var uri = new Uri(string.Format(Constants.RestUrl, string.Empty));
try
{
var response = await client.GetAsync(uri);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
Items = JsonConvert.DeserializeObject<List<TodoItem>>(content);
}
}
catch (Exception ex)
{
Debug.WriteLine(@" ERROR {0}", ex.Message);
}
return Items;
}
答案 0 :(得分:0)
你应该看看泛型。 这样的事情可能对你有帮助。
public async Task<List<T>> RefreshDataAsync(string url)
{
var items = new List<T>();
try
{
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
items = JsonConvert.DeserializeObject<List<T>>(content);
}
}
catch (Exception ex)
{
Debug.WriteLine(@" ERROR {0}", ex.Message);
}
return items;
}
我也会删除List类型,只使用T,因此该方法可以加载列表和单个项目。
public async Task<T> RefreshDataAsync(string url)
{
try
{
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(content);
}
}
catch (Exception ex)
{
Debug.WriteLine(@" ERROR {0}", ex.Message);
}
return new T;
}