データを取得するために静的メソッドを呼び出す次のコントローラー (図) があります。他の多くのページでデータを使用するので、何度もデータを要求したくありません。そのため、データが null かどうかを確認し、適切に値を返しています。
private static IEnumerable<MovieDetails> GetJsonData(string jsonRequestURL)
{
try
{
using (var wc = new WebClient())
{
var json = wc.DownloadString(jsonRequestURL);
var rootObj = JsonConvert.DeserializeObject<MoviesListRootObject>(json);
var responseObject = rootObj.movieResponse;
var movieDetails = responseObject.Select(movieDetail =>
new MovieDetails
{
Description = movieDetail.description,
MovieURI = movieDetail.formats.res150p,
Thumbnail = movieDetail.image,
Title = movieDetail.title,
ID = movieDetail.id
});
return movieDetails;
}
}
catch (Exception exception)
{
//Error Handling
}
}
これは、1つのタイプのみにデシリアライズするまでは完璧GetJsonData
です(現在MoviesListRootObject
、ルートオブジェクトの別のタイプに変換したい場合は ex: FeaturedlistRootObject
)。
しかし、同じ方法でどのように他のタイプにデシリアリングできますか?
ジェネリックが唯一の選択肢ですか、それとも私が使用できるより良い設計/機能がいくつかありますか (ダイナミックがどれほど役立つかわかりません)?
繰り返しますが、ジェネリックしか残っていない場合、さまざまな型に基づいてコードを書くことを避けることができますか?