为什么我们在这里使用接口实现

时间:2016-11-21 08:57:31

标签: asp.net-mvc interface static implementation

为什么我们将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
{   
}

1 个答案:

答案 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>();