MethodBase::IsFamilyOrAssembly Property


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

property bool IsFamilyOrAssembly {
	virtual bool get() sealed;

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::FamORAssemvisibility, 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 then 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 code 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; that access level appears only in the C++ example.

using namespace System;
using namespace System::Reflection;

public ref class Example
    void m_public() {};
    void m_internal() {};
    void m_protected() {};
protected public:
    void m_protected_public() {};
protected private:
    void m_protected_private() {};

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

    for each (MethodBase^ m in Example::typeid->GetMethods(
        BindingFlags::Instance | BindingFlags::NonPublic | BindingFlags::Public))
        if (m->Name->Substring(0, 1) == "m")

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

                              IsAssembly        IsFamilyOrAssembly
                     IsPublic          IsFamily          IsFamilyAndAssembly

m_public             True     False    False    False    False
m_internal           False    True     False    False    False
m_protected          False    False    True     False    False
m_protected_public   False    False    False    True     False
m_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
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
Return to top