我有一个接口,其中包含假设 10 种方法,并且它继承到类 class1。我的要求是我不想将 2 种方法继承到 class1 中。所以在 c#.net 中怎么可能
问问题
94 次
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 回答