2016-11-21 44 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接口没有任何定义的方法? –

相关问题