从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");

我得到一个错误说:

对象引用未设置为对象的实例。

这个实现出了什么问题?

从Xamarin调用依赖服务的挑战

您正在尝试从DependencyService中解析IRestService<Log>,而您的类实现IRestService<IRepository>。这些是不同的类型。您应该实现一个类来实现您想要的IRestService<T>的特定类型。