我最近读了反射的整个概念,我知道使用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();
Class a类有一个私有方法
internal class AClass
{
private bool First()
{
return true;
}
}
输出:
真实
访问私有方法应该在单元测试的上下文中,尤其是在处理遗留代码时。