Vb.Net Not Accessible In This Context Because It Is Friend

In Visual Basic .NET (VB.NET), the “not accessible in this context because it is friend” error occurs when you try to access a friend or internal member from outside its declaring class or outside the assembly where the class is defined.

By default, when you declare a member as “Friend” (VB.NET) or “internal” (C#), it can only be accessed by other code within the same assembly. This is a way to restrict access to certain members and promote encapsulation of code.

To understand this better, let’s consider an example:

        
            ' Assembly A
            Public Class MyClassA
                Friend Sub MyMethod()
                    Console.WriteLine("This is a friend method in MyClassA")
                End Sub
            End Class

            ' Assembly B
            Public Class MyClassB
                Public Sub AccessFriendMethod()
                    Dim instanceA As New MyClassA()
                    instanceA.MyMethod() ' This will cause the error
                End Sub
            End Class

            ' Application entry point
            Public Sub Main()
                Dim instanceB As New MyClassB()
                instanceB.AccessFriendMethod()
            End Sub
        
    

In this example, we have two classes, MyClassA and MyClassB, defined in different assemblies (Assembly A and Assembly B). MyClassA has a friend method, MyMethod, which is accessible only within Assembly A. MyClassB tries to access this friend method and that’s where the error occurs.

To resolve this issue, you have a few options:

  1. Move the code that needs access to the friend member into the same assembly as the declaring class. This way, it will have the necessary access rights.
  2. If possible, change the access modifier of the member to be more permissive, such as making it “Public” instead of “Friend” or “internal”.
  3. Use reflection to access the friend member dynamically. Although this can be more complex, it allows accessing members that would otherwise be inaccessible.

Leave a comment