gpt4 book ai didi

c# - 接口(interface)和基类混合,正确的实现方式

转载 作者:行者123 更新时间:2023-11-30 19:33:45 24 4
gpt4 key购买 nike

我有一些用户控件,我想为其指定属性和方法。

它们继承自一个基类,因为它们都具有“Foo”和“Bar”等属性,而我使用基类的原因是我不必在每个派生类中手动实现所有这些属性.

但是,我想要一个只在派生类中的方法,而不是在基类中,因为基类不知道如何“做”这个方法,所以我正在考虑使用一个接口(interface)这。如果我把它放在基类中,我必须定义一些主体来返回一个值(这将是无效的),并且始终确保重写方法没有调用基类。方法

同时使用基类和接口(interface)来公开方法是否是解决此问题的正确方法?这看起来很迂回,但我想这样做的每一种方式似乎都是错误的......

如果问题不清楚,请告诉我,这可能是个愚蠢的问题,但我想做对。

编辑:感谢所有提供出色抽象建议的人,但这让设计师失望了。如果摘要不是一个可选的选项,你会怎么做?

最佳答案

或者,您可以在基类中将方法定义为“抽象”方法,这样就不需要类来实现它。例如:

abstract class A
{
public abstract void B();
}

当然,这也会迫使您的基类成为抽象类,但听起来这对您来说效果很好。

参见 Abstract methods在 MSDN 上。

更新

由于设计者的问题,abstract 不是您的选择,您可以将该方法定义为基类的一部分,并让它抛出 NotImplementedException。如果直接从基类调用:

void DerivMethod()
{
// Must be implemented by derived class
throw new NotImplementedException();
}

否则,使用 interface 会很好,特别是如果上面的内容让你觉得不好......

关于c# - 接口(interface)和基类混合,正确的实现方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com