好的,我提出一个问题,不是为了展示良好的编程实践(这实际上可能被认为是一种不好的做法),而是关于“是否”可以完成。
话虽如此,在VB.NET中,您可以像这样实现接口...
Sub SomeInterfaceMember()
Implements ISomeInterface.SomeInterfaceMember
End Sub
在C#中,您需要显式地这样做(只能通过接口调用)...
void ISomeInterface.SomeInterfaceMember(){}
更简单地说,可以像这样隐式地进行(在这种情况下,您可以直接调用它或通过接口调用)。
void SomeInterfaceMember(){} // <-- This name matches the interface member
然而,关于VB,您也可以使用任何您想要的名称来为成员执行此操作...
Sub SomeRandomMemberName() // <-- This name doesn't match the interface member
Implements ISomeInterface.SomeInterfaceMember
End Sub
换句话说,处理实现的方法可以与接口成员名称完全不同。我在想C#中是否有类似的方法。(是的,我知道可以简单地使用显式接口,然后通过另一个具有不同名称的“包装器”成员访问它,但在VB.NET中,你只需使用一个单独的方法即可完成两者。)那么这可以做到吗?
IDisposable
并且希望具有一个Close
方法,则可以使用Sub Close Implements IDisposable.Dispose
将它们合并为一个方法。简明易读。 - MarkJWoozleClass.Bar()
中实现IWoozle.Foo()
似乎是一种代码异味。然而,如果名称Foo
已经被占用,我认为使用受保护的方法IWoozleFoo()
来实现IWoozle.Foo()
没有任何问题。在我的看法中,将公共方法Close
实现IDisposable.Dispose()
使得这两个函数始终表现完全相同,这样做实际上可能会希望允许不同的语义(例如,允许关闭后重新打开但不处理等)。 - supercatDispose
/Close
这样的建议,我不喜欢这种建议。 - supercat