【发布时间】:2017-09-17 01:57:15
【问题描述】:
我创建了一个 ConsoleApplication 来了解访问说明符。
下面是我的internal代码,我可以从Assembly外部访问这个类。
namespace Assembly_1 //This is first assembly.
{
public class Base
{
//internal class
internal class B
{
public static void fnB()
{
Console.WriteLine("fnB");
}
}
}
}
namespace Assembly_2 //This is second assembly.
{
public class Derived : Assembly_1.Base
{
public class D
{
public void fnD()
{
B.fnB();//how can I access this class?
}
}
}
}
这就是我访问它的地方。
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Assembly_2.Derived.D d = new Assembly_2.Derived.D();
d.fnD();
}
}
}
我的问题
现在我可以访问 Class B 和它的方法,如 Derived 中的 fnB()。
一切正常。但是如何?
如何在 Assembly_1 之外访问 B 类?
【问题讨论】:
-
如果你想从它的程序集外部访问它,为什么你首先将它标记为内部?
-
可能是您混淆了命名空间和程序集术语?
-
您确定
namespace Assembly_1确实是在不同的项目中定义的吗?我很确定它不是。它与namespace Assembly_2在同一个项目(程序集)中 -
所以,@Bharat 了解了 google 中程序集和命名空间之间的区别
-
“可能是您混淆了命名空间和程序集术语?”是 Ofir 在您提出问题后几分钟的评论。在这次“对话”中多次重申。
标签: c# access-specifier