我有以下控制器(图中),它们调用静态方法来获取数据。由于我将在许多其他页面上使用数据,我不想一次又一次地请求数据。这就是为什么我要检查数据是否为空,然后适当地返回值。
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
}
}
到目前为止,这是完美的,GetJsonData
只有一种类型的反序列化(目前MoviesListRootObject
如果我想转换为根对象的另一种类型:) FeaturedlistRootObject
。
但是我如何以同样的方法去渴望其他类型呢?
泛型是唯一的选择还是存在一些我可以使用的更好的设计/功能(不确定动态会有多大帮助)?
同样,如果我只剩下泛型,我可以避免编写基于不同类型的代码吗?