为什么我们将Iservice [interface]用于&在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 :(得分: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>();