![]() |
1
2
我建议使用显式接口实现:
…但这不允许您在子类中公开和实现该方法,并且仍然将其隐藏。在这种情况下,您可能需要重新考虑您的类设计。 你最好的选择是这样的:
如果方法是从IMyInterface引用而不是MyInterfaceBase引用调用的,那么仍然存在让DoWork公开的问题。你根本绕不过去。如果我做了以下事情:
鉴于:
|
![]() |
2
1
只能为公共成员定义接口。如果您希望一个方法只被定义为受保护的,那么不要为它创建接口,而只是将它创建为抽象基类的受保护的抽象成员。即使您要使用显式接口,如果实例是相关接口类型的case,那么它仍然可以公开访问。
|
![]() |
3
1
无论何时编写接口,都是隐式声明实现它的任何类的公共视图,因此尝试隐藏其方法是毫无意义的。您可以将FunctionImplementation从接口中移除,并将其保留在MyBase类中。MyBase类的任何实现都可以访问它。 在这种情况下,还可以让my基类直接实现IOne和ITwo。
|
![]() |
4
1
也许可以在抽象类中使方法成为虚拟的,然后抛出一个异常
我不知道这是不是一个愚蠢的解决方案,但至少你不允许用户使用这个方法,即使它是公共的。 |
![]() |
5
1
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 3 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 3 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |