请考虑以下代码:
using System;
namespace Nesting
{
class Program
{
static void Main()
{
new Nested.Class().Method();
}
}
namespace Nested
{
internal class Class
{
internal void Method()
{
Console.WriteLine("Inside Method");
}
}
}
}
输出:
内部方法
这意味着Nesting
成员可以访问internal
成员Nested
。有没有办法强制Nested
的成员仅对其他Nested
成员可见?
答案 0 :(得分:3)
简而言之,不在同一个集会内。
与Java不同,internal
可访问性(VB.Net中的Friend
)是使类/成员仅在同一程序集中可见。
严格地说使用反射,你仍然可以到达另一个组件中的隐藏位。
另一种情况是使用嵌套类(而不是命名空间),例如:
internal class Nested
{
protected class Class
{
// Only usable from the Nested class
internal void Method()
{
Console.WriteLine("Inside Method");
}
}
}
}
答案 1 :(得分:1)
不,你不能。所有三个相关的访问修饰符都没有给出你想要的东西。如果不将嵌套类拉到另一个程序集,就无法强制执行此操作。