我最近阅读了反思的全部概念,我知道使用这种C#工具的主要思想但我仍然无法理解其中的一个方面。我认为,Encapsulation没有任何意义,如果有人有能力通过反射执行私有方法。你能不能让我知道这个误解吗?
使用反射调用私有方法
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 AClass有一个私有方法
internal class AClass
{
private bool First()
{
return true;
}
}
输出
真
答案 0 :(得分:0)
访问私有方法应该在单元测试的上下文中,尤其是在处理遗留代码时。