【发布时间】:2012-12-27 20:47:01
【问题描述】:
我在这个论坛中搜索了这些问题并找到了很好的资源。为了理解反射的概念,我自己编写了以下代码。
static void Main(String[] args)
{
MyClass1 mc1 = new MyClass1();
Type t = mc1.GetType();
MethodInfo mInfo = t.GetMethod("method1");
object[] o=new object[]{2};
Console.WriteLine(mInfo.Invoke(mc1, o));
NameSpace2.Class1 c1 = new NameSpace2.Class1();
Type t2 = c1.GetType();
MethodInfo[] mI2 = t2.GetMethods();
object[] o2 = new object[] {2,3};
foreach (MethodInfo m in mI2)
{
Console.WriteLine(m);
}
object x = Activator.CreateInstance(t);
Console.WriteLine(x.GetType());
Console.Read();
}
我了解通过反射,我将能够在运行时获取有关对象的类型、公共方法、属性的信息,并且还能够创建该类型的对象。但我的观点是,除非并且直到我知道方法需要作为输入的参数是什么,否则我将无法实现任何方法,并且这些信息仅在运行时可用。那么,反射的重要性是什么,仅仅是关于一个对象的信息吗?
【问题讨论】:
-
例如你可以从文件中读取字符串“method1”吗?
-
ORM 和数据绑定是反射之美的好例子。
-
你有没有想过VisualStudio的属性窗口是如何实现的?我认为没有猴子会为他们添加的每个对象输入编辑器窗口! --我的意思不是不尊重,只是一个说明性的笑话:)
标签: c# .net reflection