我的界面有两个相同名称的实现,如下所示:
interface IDBCaller
{
IEnumerable<User> RetrieveUserList();
void Method1();
void Method2();
}
//First implementation of IDBCaller in project1
class DBCaller : IDBCaller
{
public IEnumerable<User> RetrieveUserList()
{
return new List<User>();
}
public void Method1()
{
//doing something
}
public void Method2()
{
//doing something
}
}
//Second implementation of IDBCaller in project2
class DBCaller: IDBCaller
{
public IEnumerable<User> RetrieveUserList()
{
return null; //Currently returns null but the desire state is to call the RetrieveUserList in Implementation1 from project 1
}
public void Method1()
{
//doing something
}
public void Method2()
{
//doing something
}
}
Run Code Online (Sandbox Code Playgroud)
实现1和2具有相同的RetrieveUserList()方法.当RetrieveUserList()从实现2调用时,我希望将调用重定向到实现1中的相同方法.
你可以使用继承,例如:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
或者使用具有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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |