Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

FieldInfo.IsFamilyOrAssembly Property

Gets a value that indicates whether the potential visibility of this field is described by FieldAttributes.FamORAssem; that is, the field can be accessed by derived classes wherever they are, and by classes in the same assembly.

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

public bool IsFamilyOrAssembly { get; }

Property Value

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

ExceptionCondition
MethodAccessException

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

If a field has FamORAssem level 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 field is limited by the visibility of its type. The IsFamilyOrAssembly property might be true for a field, but if it is a field of a private nested type, the field is not visible outside the containing type.

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

The following example defines fields 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 fields with FieldAttributes.FamANDAssem visibility.

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


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
 */


Silverlight

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

ADD
Show:
© 2015 Microsoft