从Xamarin调用依赖服务的挑战
本文关键字:挑战 服务 依赖 Xamarin 调用 | 更新日期: 2023-09-27 18:11:21
我正在从Xamarin表单访问REST Api。通过添加
,我在可移植类中创建了这样一个接口 public interface IRestService<T>
{
void Post(T item, string resourceURL);
}
public interface IRepository
{
}
和在Drod项目中,我实现了这样的接口。
[assembly:Xamarin.Forms.Dependency(typeof(RestOperationsDroid))]
namespace VLog.Droid.DependencyServices
{
public class RestOperationsDroid : IRestService<IRepository>
{
private const string BaseURL = "http://127.0.0.1/logger/v1/";
HttpClient client;
public RestOperationsDroid()
{
client = new HttpClient();
client.MaxResponseContentBufferSize = 256000;
}
public async void Post(object item, string url)
{
var uri = new Uri(string.Format(BaseURL + url));
var jsoncontent = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json");
HttpResponseMessage response = null;
response = await client.PostAsync(uri, jsoncontent);
if (response.IsSuccessStatusCode)
{
//Debug(@" TodoItem successfully saved.");
}
else
{
//throw new Exception("Failed to Post data");
}
}
}
}
呼叫Xamarin。表格(PCL项目)
DependencyService.Get<IRestService<Log>>().Post(_logitem, "sync");
我得到一个错误说:
对象引用未设置为对象的实例。
这个实现出了什么问题?
您正在尝试从DependencyService
中解析IRestService<Log>
,而您的类实现IRestService<IRepository>
。这些是不同的类型。您应该实现一个类来实现您想要的IRestService<T>
的特定类型。