2016-11-11 2 views
0

У меня есть общий сервис, который имеет основные операции, мне нужно будет преформы на моих субъектахУстановите значение объекта поля от общей службы

ряд моих образований есть поле IsEnabled

Я хочу быть в состоянии установить это поле от моей родовой службы

моей службы определяются как:

public class Service<T> : IService<T> where T : class 

Где IService является

public interface IService<T> 
    { 
     IPagedList<T> GetPagedList(
      int page = 1, 
      Expression<Func<T, bool>> filter = null, 
      Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, 
      params Expression<Func<T, object>>[] include 
     ); 

     IEnumerable<T> GetOrderedList(Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null); 

     bool Create(T entity); 

     bool Update(T entity); 

     T FindById(int id); 

     bool Delete(T entity); 

     void Enable(int id, string state); 
    } 

Я хочу, чтобы поместить следующее в моей службы:

public void Enable(int id, string state) 
     { 
      T entity = FindById(id); 

      entity.IsEnabled = (state == "true") ? true : false; 

      Update(entity); 
     } 

Но VS жалуется, что T не содержит для IsEnabled

как я могу заверить его, что он делает?

ответ

0

Создание нового интерфейса IEntity

public interface IEntity 
{ 
    public bool IsEnabled { get; set; } 
} 

и ваш сервис

public class Service<T> : IService<T> where T : class, IEntity 

И все ваши Entites должны реализовать его

+0

Это было именно то, что я пытался, но мои Entites будут генерироваться автоматически (база данных первого), поэтому я не думаю, что могу добавить к ним интерфейс. –

+0

Конечно, вы можете создать частичный класс из объектов, которые вы будете использовать и реализовать интерфейс –

+0

@KevinBradshaw Это решена ваша проблема?! –