MethodBase.IsFamilyOrAssembly 속성

정의

FamORAssem에서 이 메서드나 생성자의 잠재적 표시 유형을 설명하는지 여부를 나타내는 값을 가져옵니다. 즉, 이 메서드나 생성자는 파생 클래스(있는 경우) 및 같은 어셈블리의 클래스에서 호출할 수 있습니다.Gets a value indicating whether the potential visibility of this method or constructor is described by FamORAssem; that is, the method or constructor can be called by derived classes wherever they are, and by classes in the same assembly.

public:
 property bool IsFamilyOrAssembly { bool get(); };
public bool IsFamilyOrAssembly { get; }
member this.IsFamilyOrAssembly : bool
Public ReadOnly Property IsFamilyOrAssembly As Boolean

속성 값

true에서 이 메서드나 생성자에 대한 액세스를 정확하게 설명하면 FamORAssem이고, 그렇지 않으면 false입니다.true if access to this method or constructor is exactly described by FamORAssem; otherwise, false.

구현

예제

다음 코드 예제에서는 다양 한 표시 수준으로 메서드를 정의 하 고 IsAssembly, IsFamily, IsFamilyOrAssemblyIsFamilyAndAssembly 속성의 값을 표시 합니다.The following code example defines methods with varying levels of visibility, and displays the values of their IsAssembly, IsFamily, IsFamilyOrAssembly, and IsFamilyAndAssembly properties.

참고

Visual Basic 및 C# 언어는 MethodAttributes.FamANDAssem 표시 유형으로 메서드를 정의할 수 없습니다. 이 액세스 수준은 C++ 예제에만 표시 됩니다.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
{
public:
    void m_public() {};
internal:
    void m_internal() {};
protected:
    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"); 
    Console::WriteLine("{0,-21}{1,-18}{2,-18}{3}\n", 
        "", "IsPublic", "IsFamily", "IsFamilyAndAssembly");

    for each (MethodBase^ m in Example::typeid->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
m_protected_private  False    False    False    False    True
 */
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
 */
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 Main()
    
        Console.WriteLine(vbCrLf & _
            "{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly") 
        Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}" & vbCrLf, _
            "", "IsPublic", "IsFamily", "IsFamilyAndAssembly")
   
        For Each m As MethodBase In GetType(Example).GetMethods( _
            BindingFlags.Instance Or BindingFlags.NonPublic Or BindingFlags.Public)
        
            If Left(m.Name, 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 _
                )
            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

설명

형식 멤버에 MethodAttributes.FamORAssem 표시 유형이 있는 경우 파생 클래스의 멤버 또는 동일한 어셈블리의 모든 멤버에서 호출할 수 있지만 다른 형식에서는 호출할 수 없습니다.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. IsFamilyOrAssembly 속성이 메서드에 대해 true 될 수 있지만 전용 중첩 형식의 메서드인 경우 해당 메서드는 포함 하는 형식 외부에 표시 되지 않습니다.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.

표시 한정자가에 C# protected internal 되는 경우에는 MethodAttributes.FamORAssem에서 메서드나 생성자의 표시 유형을 정확 하 게 설명 합니다 (Protected Friend Visual Basic에서 C++protected public).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++).

적용 대상

추가 정보