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 Value
Type: System.Booleantrue if access to this method or constructor is exactly described by MethodAttributes.FamORAssem; otherwise, false.
If a type member has MethodAttributes.FamORAssem 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 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.
Note |
|---|
The Visual Basic and C# languages cannot define methods with MethodAttributes.FamANDAssem visibility; that access level appears only in the C++ example. |
using System; using System.Reflection; public class Example { public void m_public() {} internal void m_internal() {} protected void m_protected() {} protected internal void m_protected_public() {} public static 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"); foreach (MethodBase m in typeof(Example).GetMethods( BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)) { if (m.Name.Substring(0, 1) == "m") { Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", m.Name, m.IsPublic, m.IsAssembly, m.IsFamily, m.IsFamilyOrAssembly, m.IsFamilyAndAssembly ); } } } } /* 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 */
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note