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

c# -接口/类设计问题

如果这些方法对于其他类(不仅仅是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()实现了某些行为,你应该只从这两个方法中提取一个接口,并将该接口应用于需要这些方法的类。