FieldInfo.IsFamilyAndAssembly Property

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Gets a value that indicates whether the visibility of this field is described by FieldAttributes..::.FamANDAssem; that is, the field can be accessed from derived classes, but only if they are in the same assembly.

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

Syntax

Public ReadOnly Property IsFamilyAndAssembly As Boolean
public bool IsFamilyAndAssembly { get; }

Property Value

Type: System..::.Boolean
true if access to this field is exactly described by FieldAttributes..::.FamANDAssem; otherwise, false.

Exceptions

Exception Condition
MethodAccessException

This member is invoked late-bound through mechanisms such as Type..::.InvokeMember.

Remarks

If a field has FamANDAssem level visibility, it can be called from any member in a derived class that is also in the same assembly, but not from any other type.

The visibility of a field is exactly described by FieldAttributes..::.FamANDAssem if the visibility modifier is protected private in C++. Fields with this visibility cannot be defined in Visual Basic or C#.

Examples

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

Note

The Visual Basic and C# languages cannot define fields with FieldAttributes..::.FamANDAssem visibility.

To run this example, see Building examples that have static TextBlock controls for Windows Phone 8.

Imports System.Reflection

Public Class Example

   Public f_Public As Integer
   Friend f_Friend As Integer
   Protected f_Protected As Integer
   Protected Friend f_Protected_Friend As Integer

   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 f As FieldInfo In GetType(Example).GetFields( _
          BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public)

         outputBlock.Text &= String.Format("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", _
             f.Name, _
             f.IsPublic, _
             f.IsAssembly, _
             f.IsFamily, _
             f.IsFamilyOrAssembly, _
             f.IsFamilyAndAssembly _
         ) & vbCrLf
      Next
   End Sub
End Class

' This code example produces output similar to the following:
'
'                              IsAssembly        IsFamilyOrAssembly
'                     IsPublic          IsFamily          IsFamilyAndAssembly
'
'f_Public             True     False    False    False    False
'f_Friend             False    True     False    False    False
'f_Protected          False    False    True     False    False
'f_Protected_Friend   False    False    False    True     False
using System;
using System.Reflection;

public class Example
{
   public int f_public;
   internal int f_internal;
   protected int f_protected;
   protected internal int f_protected_public;

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      outputBlock.FontFamily = new System.Windows.Media.FontFamily("Courier New");
      outputBlock.Text += String.Format("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly") + "\n";
      outputBlock.Text += String.Format("{0,-21}{1,-18}{2,-18}{3}\n",
          "", "IsPublic", "IsFamily", "IsFamilyAndAssembly") + "\n";

      foreach (FieldInfo f in typeof(Example).GetFields(
          BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
      {
         outputBlock.Text += String.Format("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}",
             f.Name,
             f.IsPublic,
             f.IsAssembly,
             f.IsFamily,
             f.IsFamilyOrAssembly,
             f.IsFamilyAndAssembly
         ) + "\n";
      }
   }
}

/* This code example produces output similar to the following:

                              IsAssembly        IsFamilyOrAssembly
                     IsPublic          IsFamily          IsFamilyAndAssembly

f_public             True     False    False    False    False
f_internal           False    True     False    False    False
f_protected          False    False    True     False    False
f_protected_public   False    False    False    True     False
 */

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

FieldInfo Class

System.Reflection Namespace

IsFamilyOrAssembly

FieldAttributes

IsAssembly

IsFamily