我有一个接口,其中包含假设的10个方法,它继承给类说class1。我的要求是我不想将2方法继承到class1。所以如何在c#.net
答案 0 :(得分: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();
}
}
如果可能的话,我会选择第一个选项。
如果抛出异常,则只会在调用时发现该方法不受支持。你将不得不捕获异常,你将编写的代码必须处理这个,并且不会那么干净。
如果你拆分接口,那么你的类就没有你想要实现的方法。
答案 1 :(得分:0)
创建混合搭配系统。
您的类应该实现整个界面,因为在您的问题的上下文中实际上没有其他选择。其他答案可以为您提供有关更改界面设计者可能出现的错误语义的指导。
你的类实现了接口,但是你的类本身依赖于未来的实现者实际工作。
您的类应该从包含抽象函数的类派生。那些抽象函数将在接口的类实现中被“调用”。但由于您的类包含未解析的抽象内容,因此它不能直接实例化
UNTIL,另一个类继承自你的类,要么具体实现抽象函数,要么在一个替代的,可能的情况下,在短期内抛出不支持的异常。
通过这种方式,您可以在不违反任何原则的情况下实施您所能做到的事情,但将基本冲突传递给待定的阶级。通过这种方式,您可以迈出前进的一步,但然后回避冲突。未来的实施者可以依靠你的前进步骤作为一个正确的基础动作,但必须解决和逆转你的横向运动,作出一个比喻。