Ich muss den variablen Objekttyp als Argument an einen Konstruktor übergeben und in der Lage sein, den Variablentyp von der erstellten Methode zurückzugeben. es ist schwer zu erklären, vielleicht wird der Code einen besseren Job machen.Übergeben Sie Variablentypen an einen Konstruktor und geben Sie den gleichen Typ zurück, der übergeben wurde
für die Übergabe des Objekttyps an den Konstruktor, habe ich dies versucht.
public async Task<BlockData.Block> Last()
{
return await new AsyncConnector<BlockData.Block>(Connection).Get(
"/chain/last-block"
);
}
und es zu empfangen, ich tue dies:
public class AsyncConnector<T>
{
NisConnection Connection = null;
public AsyncConnector(NisConnection connection)
{
Connection = connection;
}
public async Task<T> Get(string uri)
{
var response = await Connection.Client.GetAsync(Connection.FullUri(uri));
return JsonConvert.DeserializeObject<T>(
JObject.Parse(await response.Content.ReadAsStringAsync()).ToString()
);
}
}
Ich habe auch versucht dies:
public async Task<BlockData.Block> Last()
{
return await new AsyncConnector(Connection).Get<BlockData.Block>(
"/chain/last-block"
);
}
public class AsyncConnector
{
NisConnection Connection = null;
public AsyncConnector(NisConnection connection)
{
Connection = connection;
}
public async Task<T> Get<T>(string uri)
{
var response = await Connection.Client.GetAsync(Connection.FullUri(uri));
return JsonConvert.DeserializeObject<T>(
JObject.Parse(await response.Content.ReadAsStringAsync()).ToString()
);
}
}
die GetAsync
Methode muss die gleiche Art und Weise arbeiten, aber für viele verschiedene Objekt Arten.
der Fehler Ich erhalte ist:
Eine Ausnahme vom Typ ‚Microsoft.CSharp.RuntimeBinder.RuntimeBinderException‘ in mscorlib.dll aufgetreten, wurde aber in Benutzercode
Zusätzliche Informationen nicht behandelt: Kann nicht Typ umwandeln ‚Newtonsoft.Json.Linq.JObject‘ auf ‚NemApi.DTOs.BlockObjects.BlockData.Block‘
können Sie die Zeichenfolge direkt deserialisieren, ohne als 'JObject' zu analysieren? – Hendry
was meinst du? – netnoob
es hätte immer noch das Problem, nicht zu wissen, welchen Typ es zu deserialisieren, unabhängig davon, ob es aus JObject oder String deserialisiert. – netnoob