MethodBase.IsFamilyOrAssembly Property

Gets a value indicating whether the potential visibility of this method or constructor is described by MethodAttributes.FamORAssem; that is, the method or constructor can be called by derived classes wherever they are, and by classes in the same assembly.

Namespace:  System.Reflection
Assemblies:   mscorlib (in mscorlib.dll)
  System.Reflection (in System.Reflection.dll)

'Declaration
Public ReadOnly Property IsFamilyOrAssembly As Boolean

Property Value

Type: System.Boolean
true if access to this method or constructor is exactly described by MethodAttributes.FamORAssem; otherwise, false.

If a type member has MethodAttributes.FamORAssem visibility, it can be called from any member in a derived class or any member in the same assembly, but not from any other type.

The actual visibility of a method is limited by the visibility of its type. The IsFamilyOrAssembly property might be true for a method, but if it is a method of a private nested type then the method is not visible outside the containing type.

The visibility of a method or constructor is exactly described by MethodAttributes.FamORAssem if the visibility modifier is protected internal in C# (Protected Friend in Visual Basic, protected public in C++).

The following code example defines methods with varying levels of visibility, and displays the values of their IsAssembly, IsFamily, IsFamilyOrAssembly, and IsFamilyAndAssembly properties.

NoteNote

The Visual Basic and C# languages cannot define methods with MethodAttributes.FamANDAssem visibility; that access level appears only in the C++ example.

Imports System
Imports System.Reflection

Public class Example

    Public Sub m_Public() 
    End Sub 
    Friend Sub m_Friend() 
    End Sub 
    Protected Sub m_Protected() 
    End Sub 
    Protected Friend Sub m_Protected_Friend() 
    End Sub 

    Public Shared Sub Main()

        Console.WriteLine(vbCrLf & _
            "{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly") 
        Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}" & vbCrLf, _
            "", "IsPublic", "IsFamily", "IsFamilyAndAssembly")

        For Each m As MethodBase In GetType(Example).GetMethods( _
            BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public)

            If Left(m.Name, 1) = "m"

                Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", _
                    m.Name, _
                    m.IsPublic, _
                    m.IsAssembly, _
                    m.IsFamily, _
                    m.IsFamilyOrAssembly, _
                    m.IsFamilyAndAssembly _
                )
            End If 
        Next 
    End Sub 
End Class 

' This code example produces output similar to the following: 

'                              IsAssembly        IsFamilyOrAssembly 
'                     IsPublic          IsFamily          IsFamilyAndAssembly 

'm_Public             True     False    False    False    False 
'm_Friend             False    True     False    False    False 
'm_Protected          False    False    True     False    False 
'm_Protected_Friend   False    False    False    True     False

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2015 Microsoft