Вы можете использовать наследование, например:
interface IDBCaller
{
IEnumerable<User> RetrieveUserList();
}
class Implementation1 : IDBCaller
{
public virtual IEnumerable<User> RetrieveUserList()
{
return new List<User>();
}
}
class Implementation2 : Implementation1
{
public override IEnumerable<User> RetrieveUserList()
{
return base.RetrieveUserList();
}
}
или использовать базовый класс с реализацией RetrieveUserList
interface IDBCaller
{
IEnumerable<User> RetrieveUserList();
void Method1();
void Method2();
}
class ImplementationBase
{
public virtual IEnumerable<User> RetrieveUserList()
{
return new List<User>();
}
}
class Implementation1 : ImplementationBase, IDBCaller
{
public void Method1()
{
throw new NotImplementedException();
}
public void Method2()
{
throw new NotImplementedException();
}
}
class Implementation2 : ImplementationBase, IDBCaller
{
public void Method1()
{
throw new NotImplementedException();
}
public void Method2()
{
throw new NotImplementedException();
}
}