如何强制命名空间成员仅对C#中直接包含命名空间的成员可见
本文关键字:命名空间 成员 包含 何强制 | 更新日期: 2023-09-27 17:59:08
考虑以下代码:
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
成员访问Nested
的internal
成员。有没有办法强制Nested
的成员只对其他Nested
成员可见?
简而言之,不在同一程序集中。
与Java不同,internal
的可访问性(VB.Net中的Friend
)是使类/成员仅在同一程序集中可见。
严格地说,使用反射,你仍然可以在另一个程序集中找到隐藏的部分。
另一种情况是使用嵌套类(而不是名称空间),因此类似于:
internal class Nested
{
protected class Class
{
// Only usable from the Nested class
internal void Method()
{
Console.WriteLine("Inside Method");
}
}
}
}
不,你不能。所有三个相关的访问修饰符都不能满足您的需要。如果不将嵌套类拉到另一个程序集,就无法强制执行此操作。