2016-11-21 67 views
0

爲什麼我們使用Iservice [接口]爲&在IEntityService爲什麼我們在這裏使用接口實現?

//here the interface being implemented !! 
public interface IEntityService<T> : IService where T : class 
{ 
    void Create(T entity); 
    void Delete(T entity); 
    IEnumerable<T> GetAll(); 
    void Update(T entity); 
    T SelectById(object pk); 
} 

public interface IService 
{ 
} 
+0

最有可能的反思,所以你可以找到你所有的服務 - 可能,但不太可能,DI。 –

回答

0

它沒有被IEntityService<T>實施,它被繼承,因爲它的另一個接口實現..

的原因無限期可能性

,它可能用作裝飾器約束,或者如@ freedomn-m在您的評論中所述,用反射和/或type檢查。


將它用作集合中實例類型的裝飾器約束的示例。使用

var services = new List<IService>(new [] { 
    new EntityService<User>(), 
    new EntityService<Role>() 
}); 

同一集合

var users = services.OfType<IEntityService<User>>().SelectMany(srv => srv.GetAll()); 

而且,作爲反射的一例使用該特定接口。

new List<object>(new [] { 
    "string", 
    0, 
    new EntityService<Role>(), // a type that implements IEntityService<Role> and IService 
    new EntityService<User>()  // a type that implements IEntityService<User> and IService 
}).OfType<IService>(); 
+0

是的,我知道它已經繼承了界面'Iservice'! 我的問題是爲什麼我們在這裏使用靜態接口Iservice? –

+0

@PrashantSharma提出一個問題,要求我們熟悉您的(未參考的)項目,以便我們知道您如何使用它,這是沒有意義的。我將這個問題標記爲版主注意。 –

+0

@ Brett Cashwell正如我在我的問題中提到的問題在第一個地方.. !!爲什麼我們使用的Iservice接口沒有任何定義的方法? –

相關問題