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.
Assembly: mscorlib (in mscorlib.dll)
Property Value
Type: System.Booleantrue if access to this field is exactly described by FieldAttributes.FamANDAssem; otherwise, false.
| Exception | Condition |
|---|---|
| MethodAccessException | This member is invoked late-bound through mechanisms such as Type.InvokeMember. |
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#.
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.
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 */
Note: