c# -接口/类设计问题
本文关键字:问题 接口 | 更新日期: 2023-09-27 18:12:58
我有一个接口,这是共同的类A, B和c,但现在我需要添加两个方法,只适用于类B,不适用于类A &C.那么,我是否需要将这两个方法添加到公共接口本身并在类A中抛出未实现的异常?C或者有更好的方法来做到这一点?
interface ICommon
{
Method1;
Method2;
Method3;
Method4;
}
Class A: ICommon
{
Method1;
Method2;
}
Class B: ICommon
{
Method1;
Method2;
Method3;
Method4;
}
Class C: ICommon
{
Method1;
Method2;
}
Thanks in advance
如果这些方法对于其他类(不仅仅是B类)是通用的:
让B扩展另一个接口
interface ICommon2
{
Method3;
Method4;
}
class B : ICommon, ICommon2
{
Method1;
Method2;
Method3;
Method4;
}
如果这些方法只针对B:
class B : ICommon
{
Method1;
Method2;
Method3;
Method4;
}
如果你的接口有这些方法,你就必须实现它们,但你可以秘密地这样做:
Class A: ICommon
{
public void Method1()
{
}
public void Method2()
{
}
void ICommon.Method3()
{
throw new NotSupportedException();
}
void ICommon.Method4()
{
throw new NotSupportedException();
}
}
这就是数组如何实现IList
接口并隐藏Add
之类的成员。
如果两个类必须实现相同的接口,但其中一个类需要的方法多于接口包含的方法,则这些方法不属于该接口。否则,其他类也需要这些方法。
接口描述行为,如IDisposable指示Dispose()方法。如果你的Method3()和Method4()实现了某些行为,你应该只从这两个方法中提取一个接口,并将该接口应用于需要这些方法的类。