IsFamilyOrAssembly Property

MethodBase.IsFamilyOrAssembly Property

Gets a value that indicates 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
Assembly:  mscorlib (in mscorlib.dll)

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, 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 example defines methods with varying levels of visibility, and displays the values of their IsAssembly, IsFamily, IsFamilyOrAssembly, and IsFamilyAndAssembly properties.


The Visual Basic and C# languages cannot define methods with MethodAttributes.FamANDAssem visibility.

To run this example, see Building Examples That Use a Demo Method and a TextBlock Control.

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 Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)

      outputBlock.FontFamily = New FontFamily("Courier New")
      outputBlock.Text &= String.Format(vbCrLf & _
          "{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly") & vbCrLf
      outputBlock.Text &= String.Format("{0,-21}{1,-18}{2,-18}{3}" & vbCrLf, _
          "", "IsPublic", "IsFamily", "IsFamilyAndAssembly") & vbCrLf

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

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

            outputBlock.Text &= String.Format("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", _
                m.Name, _
                m.IsPublic, _
                m.IsAssembly, _
                m.IsFamily, _
                m.IsFamilyOrAssembly, _
                m.IsFamilyAndAssembly _
            ) & vbCrLf
         End If
   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


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

© 2015 Microsoft