从C++转C#两个月,还是不太了解反射。看书,里面说的主要是Type拿到后能取各种属性,但是不太明白这种属性有什么作用。纯判断类型的话,is就可以。as可以映射类型。实在还是没有弄明白反射的作用。
搜论坛上的帖子,很多是说Java的。因此发帖请教几个问题。1、反射的定义。msdn上说反射提供了一种对象。 哪位有没有更具体的解释呢。(Reflection provides objects (of type Type) that encapsulate assemblies, modules and types.)
2、反射的使用范围,哪些场景会使用反射,甚至哪些场景必须使用反射。因为我现在看到的就是Type,好像没有太广的使用范围。
3、反射的优缺点。谢谢。
搜论坛上的帖子,很多是说Java的。因此发帖请教几个问题。1、反射的定义。msdn上说反射提供了一种对象。 哪位有没有更具体的解释呢。(Reflection provides objects (of type Type) that encapsulate assemblies, modules and types.)
2、反射的使用范围,哪些场景会使用反射,甚至哪些场景必须使用反射。因为我现在看到的就是Type,好像没有太广的使用范围。
3、反射的优缺点。谢谢。
实现步骤:
1,导入using System.Reflection;
2,Assembly.Load("程序集")加载程序集,返回类型是一个Assembly
3, foreach (Type type in assembly.GetTypes())
{
string t = type.Name;
}
得到程序集中所有类的名称
4,Type type = assembly.GetType("程序集.类名");获取当前类的类型
5,Activator.CreateInstance(type); 创建此类型实例
6,MethodInfo mInfo = type.GetMethod("方法名");获取当前方法
7,mInfo.Invoke(null,方法参数);
MFC应该有反射,但没有用过MFC。标准C++没有反射的。
string methodName = "Method" + i;
this.GetType().GetMethod(methodName).Invoke(this, null);以上代码仅供参考