【发布时间】:2016-01-27 08:23:53
【问题描述】:
这是界面
public interface ITransporter
{
TransporterType TransporterType { get; set; }
TransportActionResults BeginTransport(
Project sourceProject,
ProjectBase targetProject);
bool CheckTargetExists(ProjectBase project);
}
这里的ProjectBase是所有类型项目类的抽象类。
这是实现ITransporter接口的类内部的方法。
public class LocalTransporter : ITransporter
{
public TransportActionResults BeginTransport(
Project sourceProject,
TargetLocalProject targetProject)
{
return TransportActionResults.Success;
}
这个TargetLocalProject 类继承自ProjectBase 类。但是,我收到一条错误消息,提示“LocalTransporter 类未实现接口成员”并指向 BeginTransport 方法。
这是我的问题。我需要使用基类ProjectBase 实现接口的BeginTransport 方法,因为从基类继承了几个不同的项目类,我们不知道会使用哪一个。
此外,还有几种不同的Transporter 类型,因此我需要使用接口ITransporter 与之交互。
注意:我考虑过使用ProjectBase而不是TargetLocalProject来实现该方法,但是当直接使用LocalTransporter(而不是通过接口)时,参数的类型应该是特定的项目类型而不是基类。
我希望我说清楚了。那么,有没有办法在接口中使用基类,在实现方法中使用子类来实现这个接口方法?
【问题讨论】:
-
听起来你想让你的界面通用。
-
@juharr 你是对的,答案也是。
标签: c# inheritance interface