【发布时间】:2015-11-09 09:22:31
【问题描述】:
我最近阅读了反射的整个概念,我知道使用这种 C# 工具的主要思想,但我仍然无法理解它的一个方面。我认为,封装没有任何意义,如果有人有这种通过反射执行私有方法的能力。你介意让我知道这个误解吗?
使用反射调用私有方法
string methodName = "";
Type aclass = typeof (AClass);
object obj = Activator.CreateInstance(aclass);
Type t = typeof (AClass);
MethodInfo [] mi = t.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance);
methodName = mi[0].Name;
MethodInfo PrivateMethod = typeof (AClass).GetMethod(methodName,BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine(PrivateMethod.Invoke(obj,null));
Console.ReadLine();
AClass 有一个私有方法
internal class AClass
{
private bool First()
{
return true;
}
}
输出:
是的
【问题讨论】:
-
你可能想看看this answer
标签: c# reflection