MethodBase.IsFamilyOrAssembly 属性

定义

获取一个值,该值指示此方法或构造函数的潜在可见性是否由 FamORAssem 描述;也就是说,此方法或构造函数可由派生类(无论其位置如何)和同一程序集中的类调用。

C#
public bool IsFamilyOrAssembly { get; }

属性值

如果对此方法或构造函数的访问由 FamORAssem 准确描述,则为 true;否则为 false

实现

示例

下面的代码示例定义了具有不同可见性级别的方法,并显示其 IsAssemblyIsFamilyIsFamilyOrAssemblyIsFamilyAndAssembly 属性的值。

C#
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() {}
    private protected void m_private_protected() {}

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

注解

如果类型成员具有 MethodAttributes.FamORAssem 可见性,则可以从派生类中的任何成员或同一程序集中的任何成员调用它,但不能从任何其他类型调用它。

方法的实际可见性受其类型的可见性限制。 属性 IsFamilyOrAssembly 可能 true 用于方法,但如果它是私有嵌套类型的方法,则该方法在包含类型之外不可见。

如果可见性修饰符protected internal在 Visual Basic protected public 中的 C# (,则通过 MethodAttributes.FamORAssem C++) Protected Friend 来准确描述方法或构造函数的可见性。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

另请参阅