我已经问了一些与此相关的问题,但仍然没有确凿的答案,所以这里有一个更简单的问题。
考虑一下。我有2个接口。一个描述一个道。一种是 wcf 接口。wcf 接口继承了 dao 接口,以便使用 wcf 属性公开其方法。因为它是一个 wcf 接口,我当然必须再次声明这些方法,以便在它们上放置 wcf 属性,例如 [OperationContract]。结果,我实际上隐藏了以前的接口方法,并且必须在它们上放置“新”关键字。在这种情况下这样做是否正确。我需要能够通过 wcf 接口呈现 dao 接口方法,因此是继承它的原因。我想强制 wcf 接口公开这些功能。看来我的手很紧,我必须使用这种方法才能暴露这些方法,但你怎么看?
在代码方面,它看起来像这样:
//The dao interface
public interface IMyDao
{
void Foo();
}
//The wcf interface which implements/extends the IMyDao interface in order to add wcf attributes
[ServiceContract]
public interface IMyWCF : IMyDao
{
[OperationContract]
new void Foo();
}
//The dao class that implements the dao interface
public class MyDao : IMyDao
{
public void Foo()
{
//Do something
}
}
//The class implements the wcf interface. Makes calls to the dao.
public class MyWCF : IMyWCF
{
public void Foo()
{
MyDao myDao = new MyDao();
myDao.Foo();
}
}