我使用的是.NET 3.5。我有asp.net mvc应用程序。有基础控制器:
public abstract class BackendController<TModel> : BaseController where TModel : class
{
// skipped ...
public ActionResult BatchDelete(int[] ids)
{
var entities = repository.GetList().Where(item => ids.Contains(item.ID));
repository.delete(entities)
}
public ActionResult BatchHide(int[] ids)
{
var entities = repository.GetList().Where(item => ids.Contains(item.ID));
repository.BatchUpdate(
entities.Where(item => item.IsHidden == false),
c => new TModel { IsHidden = true }
);
}
}
由于item.ID和item.IsHidden,它不会编译 - 但在运行时这是具有某些属性的有效类型。如何编译?
答案 0 :(得分:2)
好吧,您可以使用界面来描述公共属性,并向TModel
添加约束:
public interface IModel
{
int ID { get; }
bool IsHidden { get; set; }
}
...
public abstract class BackendController<TModel> : BaseController
where TModel : IModel, new()