ジェネリックメソッドはどうですか?
private async Task<T> GetAsync<T>(string uri)
{
var client = GetHttpClient(uri);
var content = await client.GetStringAsync(uri);
var serializer = new JavaScriptSerializer();
var t = serializer.Deserialize<T>(content);
return t;
}
通常、このメソッドを別のクラスに配置してpublic
、別のクラスのメソッドで使用できるようにする必要があります。
このメソッドを呼び出す方法に関しては、次のことを試すことができます。
// I capitalized the first letter of the method,
// since this is a very common convention in .NET
public Patron GetPatronById(string barcode)
{
string uri = "patrons/find?barcode=" + barcode;
var Patron = GetAsync<Patron>(uri).Result;
return Patron;
}
注GetAsync
: 上記のスニペットでは、を別のクラスに移動していないと想定しています。移動する場合は、少し変更する必要があります。
アップデート
私はあなたのメモの意味に従っていません。Yuvalが以下で行ったように、GetPatronByIdもタスク関数にする必要がありますか?
私は次のようなことを意味します:
// The name of the class may be not the most suitable in this case.
public class Repo
{
public static async Task<T> GetAsync<T>(string uri)
{
var client = GetHttpClient(uri);
var content = await client.GetStringAsync(uri);
var serializer = new JavaScriptSerializer();
var t = serializer.Deserialize<T>(content);
return t;
}
}
public Patron GetPatronById(string barcode)
{
string uri = "patrons/find?barcode=" + barcode;
var Patron = Repo.GetAsync<Patron>(uri).Result;
return Patron;
}