-1

我有一个接口,其中包含假设 10 种方法,并且它继承到类 class1。我的要求是我不想将 2 种方法继承到 class1 中。所以在 c#.net 中怎么可能

4

2 回答 2

6

您可以将您的界面分成 2 部分,并让您的类只实现其中之一:

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

或者你可以抛出NotImplementedException一个Method2

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

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

如果您抛出异常,您只会在调用它时发现该方法不受支持。您将不得不捕获异常,而您将编写的代码将不得不处理这个异常,而且不会那么干净。

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

于 2013-08-31T16:20:02.767 回答
0

创建一个混搭系统。

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

您的类实现了接口,但您的类本身依赖于实际执行工作的未来实现者。

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

UNTIL,另一个类从您的类继承,或者具体实现抽象函数,或者在另一个替代方案中,并且 - 很可能在短期内引发不支持的异常。

这样,您可以在不违反任何原则的情况下实现您可以执行的操作,但将基本冲突传递给待确定的类。这样,您向前迈出了一步,但随后又回避了冲突。未来的实施者可以将您的向前迈出作为正确的基本动作,但必须解决并扭转您的横向动作,以进行隐喻。

于 2013-08-31T16:37:58.647 回答