Pra*_*abu 3 .net c# assemblies system.reflection .net-assembly
IsAssembly, IsPublic, IsFamily, IsFamilyOrAssembly, IsFamilyAndAssembly我已经阅读过相关内容,但我无法理解每个人的作用。这里奇怪的是IsFamily,在代码中返回并IsAssembly返回False,但IsFamilyOrAssembly返回True.
有人可以解释每个属性,因为我发现从文档中很难理解。当我开始阅读 c# 中的反射时,我遇到了所有这些。
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
);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码示例生成类似于以下内容的输出:
Run Code Online (Sandbox Code Playgroud)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
类的成员具有与其关联的访问修饰符(公共、内部……)。这些定义了成员实现的面向对象封装的级别。您可以在此处找到更多详细信息。
使用反射,你可能想看看:
/*Modifiers*/
IsPublic public
IsFamilyOrAssembly protected internal
IsFamily protected
IsFamilyAndAssembly private protected (since C# 7.2)
IsAssembly internal
Run Code Online (Sandbox Code Playgroud)
如果要确定成员在继承类型中是否可见,则需要使用表达式 ( m.IsFamilyOrAssembly || m.IsFamily || m.IsFamilyAndAssembly || m.IsAssembly ) 进行检查。并且这些属性中只有一个是真的,所有其他的都是假的。
| 归档时间: |
|
| 查看次数: |
270 次 |
| 最近记录: |