2010-10-28 63 views
2

使用.NET 3.5的Iam。我有asp.net mvc應用程序。有基本控制器:如何訪問LINQ表達式中的泛型類型的屬性

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的 - 但在運行時,這是有效的類型具有特定屬性。如何使這個編譯?

回答

2

嗯,你可以使用一個接口來描述共同的屬性和約束添加到TModel

public interface IModel 
{ 
    int ID { get; } 
    bool IsHidden { get; set; } 
} 

... 

public abstract class BackendController<TModel> : BaseController 
    where TModel : IModel, new()