【发布时间】:2015-08-17 15:10:10
【问题描述】:
我明确地创建并实现了一个接口,如下所示。
public interface IA
{
void Print();
}
public class C : IA
{
void IA.Print()
{
Console.WriteLine("Print method invoked");
}
}
然后按照Main方法执行
public class Program
{
public static void Main()
{
IA c = new C();
C c1 = new C();
foreach (var methodInfo in c.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance))
{
if (methodInfo.Name == "ConsoleApplication1.IA.Print")
{
if (methodInfo.IsPrivate)
{
Console.WriteLine("Print method is private");
}
}
}
c.Print();
}
}
我在控制台上得到的结果是:
打印方法是私有的
调用的打印方法
所以我的问题是为什么这个私有方法是从其他类执行的?
据我了解,私有成员的可访问性仅限于其声明类型,那么为什么它的行为如此奇怪。
【问题讨论】: