FieldInfo::IsFamilyAndAssembly Property

 

Gets a value indicating 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)

public:
property bool IsFamilyAndAssembly {
	virtual bool get() sealed;
}

Property Value

Type: System::Boolean

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

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

System_CAPS_noteNote

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

using namespace System;
using namespace System::Reflection;

public ref class Example
{
public:
    int f_public;
internal:
    int f_internal;
protected:
    int f_protected;
protected public:
    int f_protected_public;
protected private:
    int f_protected_private;
};

void main()
{
    Console::WriteLine("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly"); 
    Console::WriteLine("{0,-21}{1,-18}{2,-18}{3}\n", 
        "", "IsPublic", "IsFamily", "IsFamilyAndAssembly");

    for each (FieldInfo^ f in Example::typeid->GetFields(
        BindingFlags::Instance | BindingFlags::NonPublic | BindingFlags::Public))
    {
        Console::WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", 
            f->Name,
            f->IsPublic,
            f->IsAssembly,
            f->IsFamily,
            f->IsFamilyOrAssembly,
            f->IsFamilyAndAssembly
        );
    }
}

/* 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
f_protected_private  False    False    False    False    True
 */

Universal Windows Platform
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top
Show: