假设我有一个许多不同类实现的接口:
public interface IHaveObjects
{
object firstObject();
}
Run Code Online (Sandbox Code Playgroud)
(注意:我不能使它成为一个抽象基类,因为IHaveObjects的实现者可能已经有了一个基类.)
现在我想在接口中添加一个新方法,这样接口的一个实现者就可以有特殊的行为.理想情况下我会做这样的事情:
public interface IHaveObjects
{
object firstObject();
object firstObjectOrFallback()
{
return firstObject();
}
}
Run Code Online (Sandbox Code Playgroud)
然后转到接口的那个实现者并给它覆盖:
public class ObjectHaverPlus : IHaveObjects
{
public override object IHaveObjects.firstObjectOrFallback()
{
return firstObject() ?? getDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
但是它是在C#禁止在接口中提供的方法的身体,我想避免去的每一个实施者IHaveObjects在的定义下降firstObjectOrFallback().(想象一下,如果有数百或数千)
有没有办法在没有大量复制粘贴的情况下执行此操作?
引入第二个继承自 IHaveObjects 的接口怎么样?
您只需更改这些类,这些类需要新接口和新方法。
这看起来像:
interface I1
{
void Method1();
}
interface I2 : I1
{
void Method2();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |