如何不继承接口中的某些函数

本文关键字:函数 何不 继承 接口 | 更新日期: 2023-09-27 18:29:41

我有一个接口,它包含假定的10个方法,并且继承到类,比如class1。我的要求是我不想将2-mod继承到class1中。那么在c#.net 中它是如何实现的

如何不继承接口中的某些函数

您可以将接口拆分为2,并让您的类只实现其中一个:

public interface Ifc1 {
    void Method1();
}
public interface Ifc2 {
    void Method2();
}
class Cls1 : Ifc1 {
    // now you need to implement Method1 only
}

或者你可以在Method2:中抛出一个NotImplementedException

class Cls1 : Ifc1 {
    public void Method2() {
        throw new NotImplementedException();
    }
}

如果可能的话,我会选择第一种。

如果你抛出一个异常,你只会在调用它时发现该方法不受支持。你必须抓住这个异常,你将要编写的代码必须处理这个问题,而且不会那么干净。

相反,如果您拆分接口,您的类将没有您不想实现的方法。

创建一个混搭系统。

您的类应该实现整个接口,因为在您的问题上下文中确实没有其他选择。其他答案可以为您提供指导,帮助您更改接口设计者建立的可能不正确的语义。

你的类实现了接口,但你的类本身取决于未来实际完成工作的实现者。

类应该派生自包含抽象函数的类。这些抽象函数将在接口的类实现中被"调用"。但由于您的类包含未解析的抽象内容,因此它将不是可直接实例化的

直到现在,另一个类从您的类继承,并具体实现抽象函数,或者在另一种情况下,很可能在短期内抛出不支持的异常。

通过这种方式,您可以在不违反任何原则的情况下实现您所能实现的,但可以将根本冲突传递给待确定的类。通过这种方式,你向前迈出了一步,但随后又避开了冲突。未来的实施者可以依赖于你的前一步是正确的基础动作,但必须下定决心并反向避开你的横向动作,以进行隐喻。