MethodBase.IsAssembly 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个值,该值指示此方法或构造函数的潜在可见性是否由 Assembly 描述;也就是说,此方法或构造函数只对同一程序集中的其他类型可见,而对该程序集以外的派生类型则不可见。
public:
property bool IsAssembly { bool get(); };
public bool IsAssembly { get; }
member this.IsAssembly : bool
Public ReadOnly Property IsAssembly As Boolean
属性值
如果此方法或构造函数的可见性由 Assembly 准确描述,则为 true
;否则为 false
。
实现
示例
下面的代码示例定义了具有不同可见性级别的方法,并显示其 IsAssembly、 IsFamily、 IsFamilyOrAssembly和 IsFamilyAndAssembly 属性的值。
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() {}
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
*/
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
Private Protected Sub m_Private_Protected()
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
'm_Private_Protected False False False False True
注解
方法的实际可见性受其类型的可见性限制。 属性 IsAssembly 可能 true
用于方法,但如果它是私有嵌套类型的方法,则该方法在包含类型之外不可见。
如果在 Visual Basic) 中 (Friend
了唯一的可见性修饰符internal
,则完全描述MethodAttributes.Assembly方法或构造函数的可见性。 此属性 false
适用于 protected internal
Visual Basic 中的 C# (Protected Friend
、 protected public
C++) 中的方法;使用 IsFamilyOrAssembly 属性标识此类方法。