|
1
2
我建议使用显式接口实现:
…但这不允许您在子类中公开和实现该方法,并且仍然将其隐藏。在这种情况下,您可能需要重新考虑您的类设计。 你最好的选择是这样的:
如果方法是从IMyInterface引用而不是MyInterfaceBase引用调用的,那么仍然存在让DoWork公开的问题。你根本绕不过去。如果我做了以下事情:
鉴于:
|
|
|
2
1
只能为公共成员定义接口。如果您希望一个方法只被定义为受保护的,那么不要为它创建接口,而只是将它创建为抽象基类的受保护的抽象成员。即使您要使用显式接口,如果实例是相关接口类型的case,那么它仍然可以公开访问。
|
|
|
3
1
无论何时编写接口,都是隐式声明实现它的任何类的公共视图,因此尝试隐藏其方法是毫无意义的。您可以将FunctionImplementation从接口中移除,并将其保留在MyBase类中。MyBase类的任何实现都可以访问它。 在这种情况下,还可以让my基类直接实现IOne和ITwo。
|
|
|
4
1
也许可以在抽象类中使方法成为虚拟的,然后抛出一个异常
我不知道这是不是一个愚蠢的解决方案,但至少你不允许用户使用这个方法,即使它是公共的。 |
|
|
5
1
|
|
|
Rishab Negi · 这个关键字在抽象类中是如何工作的 1 年前 |
|
|
Reelie · C#11-通过抽象类在接口中静态抽象成员? 1 年前 |
|
Denis Steinman · 如何从内部命名空间为类创建别名?复制 1 年前 |
|
|
vimal raj · javascript中类的执行顺序 2 年前 |
|
|
Max · 如何使用抽象/接口类的向量作为函数参数? 2 年前 |
|
|
timurichk · 我的类不重写抽象方法compareTo 8 年前 |