关于vb.net:Access方法在不同的类但相同的程序集?

Access methods in different classes but same assembly?

对vb.net中的类修饰符有点困惑

在我的项目中,我有一个具有多个类的双层。在每个类中,我都有一些通过公共共享修饰符公开的公共方法函数。

但是,在两层中的不同类中,我需要访问不同类中的方法,但我不希望将相同的命名空间(在两层中)公开给ui projectlayer。

我原以为friend修饰符会将该方法公开给同一命名空间中的类,但它给了我一个错误,即对非共享成员的引用requires和对象引用


友元修饰符(C中的内部修饰符)向同一程序集中的类公开成员。

在您的情况下,错误与友元修饰符无关。从错误消息中可以看出,您试图像访问共享方法一样访问实例(即非共享)方法。需要类的实例才能调用此类方法。

代码示例会很有帮助,因为它有助于更容易地判断应该更改什么。


举个例子。

实例方法

1
2
3
4
5
 Friend Class Foo
   Friend Sub Fubar()
     'do something
   End Sub
 End Class

用途:

1
2
 Dim fu As New Foo
 fu.Fubar()

共享方法

1
2
3
4
5
 Friend Class Foo
   Friend Shared Sub Fubar()
     'do something
   End Sub
 End Class

用途:

1
Foo.Fubar()