我有两个视图模型PublishedSong
和RadioStation
,我希望它们具有IncrementViews(int id)
功能。
我没有将函数复制并粘贴到两个控制器中,而是想制作一个通用的帮助类。
助手:
public class CustomDBHelper<T>
{
public static IEnumerable<T> GetElements(ApplicationDbContext db, T type)
{
if (type.Equals(typeof(SongsController)))
return (IEnumerable<T>)db.PublishedSongs;
else if (type.Equals(typeof(RadioStationsController)))
return (IEnumerable<T>)db.RadioStations;
else
throw new Exception("Controller not found, DBHelper");
}
}
控制器:
public class MusicBaseController : Controller
{
public JsonResult IncrementViews(int id)
{
using (ApplicationDbContext db = new ApplicationDbContext())
{
db.PublishedSongs.Single(x => x.Id == id);
var element = CustomDBHelper<T>.GetElements(db, this.GetType()).Single(x => x.Id == id);
element.UniquePlayCounts++;
db.SaveChanges();
return Json(new { UniquePlayCounts = element.UniquePlayCounts }, JsonRequestBehavior.AllowGet);
}
}
}
我在使用此行时遇到问题:var element = CustomDBHelper<T>.GetElements(db, this.GetType()).Single(x => x.Id == id);
<T>
无效。我是泛型的新手,我认为它期望上课,但因为课程可能是PublishedSong
或RadioStation
我不知道该怎么做。