2016-10-04 3 views
0

Ich arbeite an dem Zugriff auf REST API von Xamarin Forms. Ich habe eine Schnittstelle in tragbarer Klasse wie folgt durchHerausforderung beim Aufruf des Abhängigkeitsdienstes von Xamarin

public interface IRestService<T> 
    { 
     void Post(T item, string resourceURL); 
    } 

    public interface IRepository 
    { 

    } 

Hinzufügen erstellt und in Drod Projekt Ich bin die Schnittstelle wie diese umgesetzt werden.

[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"); 
      } 
     } 

    } 
} 

Aufruf in Xamarin.Forms (PCL Projekt)

DependencyService.Get<IRestService<Log>>().Post(_logitem, "sync"); 

Ich erhalte eine Fehlermeldung sagt:

Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

Was lief bei dieser Implementierung falsch?

+0

Was ist die Beziehung zwischen 'IRepository' und' Log'? – hvaughan3

Antwort

0

Sie versuchen, eine IRestService<Log> von der DependencyService zu lösen, während Ihre Klasse implementiert IRestService<IRepository>. Dies sind verschiedene Arten. Sie sollten eine Klasse implementieren, die den gewünschten spezifischen Typ für IRestService<T> implementiert.

+0

@NaveenBathina Ich habe meine Antwort geändert. Es ist praktisch aus dem gleichen Grund. –

Verwandte Themen