2016-11-11 1 views
0

ich einen generischen Dienst haben, die grundlegenden Operationen hat werde ich auf meine Entitäten Vorform müssenStellen Sie eine Einheit Feldwert von einem generischen Dienst

eine Reihe meiner Einheiten haben ein Feld IsEnabled

Ich möchte Die Lage sein, dieses Feld von meinem allgemeinen Dienst zu setzen

mein Service ist wie folgt definiert:

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

Wo IService ist

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); 
    } 

Ich möchte folgendes in meinen Dienst stellen:

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

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

      Update(entity); 
     } 

Aber VS beklagt, dass T nicht für IsEnabled enthält

wie kann ich es versichern, dass es nicht?

Antwort

0

erstellen Neue Schnittstelle IEntity

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

und Ihr Service

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

Und alle Entities muss implementieren

+0

Das war genau das, was ich versuchte, jedoch sind meine entites automatisch generiert (Datenbank zuerst) Also ich glaube nicht, dass ich ihnen eine Schnittstelle hinzufügen kann –

+0

Natürlich können Sie, können Sie teilweise Klasse von Entities erstellen, die Sie verwenden und implementieren Sie die Schnittstelle –

+0

@KevinBradshaw Ist das dein Problem gelöst?! –

Verwandte Themen