从抽象类和接口继承抽象从基接口继承的问题是否存在。下面的例子是为了展示这个概念而做了很多删减。我这样做是为了创建一个基于 IFooRepository 的假类,并且 FooRepository 可以重用我的抽象类中的所有代码(将由许多其他类共享):
public interface IMyRepository<T> where T : class
{
List<T> GetEntity();
}
public abstract class MyRepository<T> : IMyRepository<T> where T : class
{
protected readonly string _connectionString;
public virtual T CommonFunction(int Id)
{
//do my common code here
}
public List<T> GetEntity()
{
}
}
public interface IFooRepository : IMyRepository<Foo>
{
void UpdateFoo(int id, string foo);
}
public class FooRepository : MyRepository<Foo>, IFooRepository
{
public void UpdateFoo(int id, string foo)
{
throw new NotImplementedException();
}
}
public class FakeFooRepository : IFooRepository
{
public List<Foo> GetEntity()
{
throw new NotImplementedException();
}
public void UpdateFoo(int id, string foo)
{
throw new NotImplementedException();
}
}
public interface IBarRepository : IMyRepository<Bar>
{
void DoSomethingElse(int id);
}
public class BarRepository : MyRepository<Bar>, IBarRepository
{
public void DoSomethingElse(int id)
{
}
}
如果 IFooRepository 不继承自 IMyRepository 而是包含所有这样的成员,是否会更好:
public interface IFooRepository
{
void UpdateFoo(int id, string foo);
List<Foo> GetEntity();
}
无论哪种方式,整个事情都可以按我的预期编译和工作,只是想知道由于接口重叠是否会出现任何问题。
谢谢