VB.NET访问级别的接口声明不匹配访问级别的实现

时间:2015-04-08 14:14:23

标签: vb.net

所以,我们有一个公共界面,如:

Public Interface PublicInterface
    Sub DoStuff()
End Interface

具有实现公共接口的内部可见性的类:

Friend Class InternalClass
    Implements PublicInterface

    Friend Sub DoStuff() Implements PublicInterface.DoStuff
        'Why is this allowed? This is accessible to "public" clients!
    End Sub

End Class

我想我很困惑,因为界面的全部意义是能够与它接口......就像这样:

Public Class AClassInAssembly
    Public Shared Function GetPublicInterface() As PublicInterface
        Return New InternalClass()
    End Function
End Sub

所以你可以这样称呼它:

Public Class AClassOutsideAssembly
    Sub Main()
        AClassInAssembly.GetPublicInterface().DoStuff()
    End Sub
End Class

TLDR版本:为什么可以在接口的方法上更改访问修饰符?我不希望任何人认为他们突然限制访问那种基本上是公开的方法,无论该类是否。

您可以将设置更改为不允许此操作吗?

0 个答案:

没有答案