Share via

Facebook x.com LinkedIn Email

MethodBase.IsFamilyOrAssembly Property

Microsoft Silverlight will reach end of support after October 2021. Learn more.

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

Syntax

'Declaration
Public ReadOnly Property IsFamilyOrAssembly As Boolean
public bool IsFamilyOrAssembly { get; }

Property Value

Type: System.Boolean
true if access to this method or constructor is exactly described by MethodAttributes.FamORAssem; otherwise, false.

Remarks

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, 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++).

Examples

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

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

Imports System.Reflection
Public Class Example
 Public Sub m_Public()
 End Sub
 Friend Sub m_Friend()
 End Sub
 Protected Sub m_Protected()
 End Sub
 Protected Friend Sub m_Protected_Friend()
 End Sub
 Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
 outputBlock.FontFamily = New FontFamily("Courier New")
 outputBlock.Text &= String.Format(vbCrLf & _
 "{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly") & vbCrLf
 outputBlock.Text &= String.Format("{0,-21}{1,-18}{2,-18}{3}" & vbCrLf, _
 "", "IsPublic", "IsFamily", "IsFamilyAndAssembly") & vbCrLf
 For Each m As MethodBase In GetType(Example).GetMethods( _
 BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public)
 If Left(m.Name, 1) = "m" Then
 outputBlock.Text &= String.Format("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", _
 m.Name, _
 m.IsPublic, _
 m.IsAssembly, _
 m.IsFamily, _
 m.IsFamilyOrAssembly, _
 m.IsFamilyAndAssembly _
 ) & vbCrLf
 End If
 Next
 End Sub
End Class
' This code example produces output similar to the following:
'
' IsAssembly IsFamilyOrAssembly
' IsPublic IsFamily IsFamilyAndAssembly
'
'm_Public True False False False False
'm_Friend False True False False False
'm_Protected False False True False False
'm_Protected_Friend False False False True False
using System;
using System.Reflection;
using System.Windows.Media;
public class Example
{
 public void m_public() { }
 internal void m_internal() { }
 protected void m_protected() { }
 protected internal void m_protected_public() { }
 public static void Demo(System.Windows.Controls.TextBlock outputBlock)
 {
 outputBlock.FontFamily = new 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 (MethodBase m in typeof(Example).GetMethods(
 BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
 {
 if (m.Name.Substring(0, 1) == "m")
 {
 outputBlock.Text += String.Format("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}",
 m.Name,
 m.IsPublic,
 m.IsAssembly,
 m.IsFamily,
 m.IsFamilyOrAssembly,
 m.IsFamilyAndAssembly
 ) + "\n";
 }
 }
 }
}
/* 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
 */

Version Information

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

Platforms

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.


  • Last updated on 2011年11月18日