这些资料是我学习的时候在网络上寻找到的,发布出来希望对大家有帮助,一起努力前进,嘿嘿......Microsoft C#规范 2.0 版 GFC用户提交

feedsky 抓虾 pageflakes google reader my yahoo bloglines 鲜果 有道 http://wap.feedsky.com/bliplink

Reflection高级编程2

//(1)利用反射可以在运行时得到类型信息
//  包括方法、属性、事件、字段及构造函数,还可以获得每个成员的名称、限定符和参数等信息。
//(2)利用反射可以在运行时根据得到的类型信息动态创建类型的实例,设置字段,调用方法,设置属性和激发事件。

//------------------System.Reflection命名空间中的一些类------------------------------------------
//
// System.Object
//  System.Reflection.Assembly
//  System.Reflection.Module
//  System.Reflection.ParameterInfo
//  System.Reflection.MemberInfo
//   System.Reflection.EventInfo
//   System.Reflection.FieldInfo
//   System.Reflection.MethodBase
//    System.Reflection.ConstructorInfo
//    System.Reflection.MethodInfo
//   System.Reflection.PropertyInfo
//   System.Type
//
// MemberInfo 类是用于获取类的所有成员(构造函数、事件、字段、方法和属性)信息的类的抽象基类。
//----------------------------------------------------------------------------------------------

//Assembly类的CreateInstance()方法在创建具有无参数构造函数的对象时比较方便,创建具有有参数构造函数的对象时比较麻烦。
//Assembly类的CreateInstance()方法的内部是调用系统激活器类Activator的CreateInstance来创建对象的。

//创建具有有参数构造函数的对象时,可采用Assembly类的CreateInstance()方法。
----------------------------------------------------------------------------------------------------------------
using System;
using System.Reflection;
namespace _08_22
{
    public class MyClass
    {
        public string MyField;
        public void MyMethod()
        {
            Console.WriteLine("调用 MyMethod! MyField: {0}", MyField);
        }
        public void MyMethod(string param)
        {
            Console.WriteLine("调用 MyMethod! MyField: {0}. 参数: {1}", MyField, param);
        }
    }
}
------------------------------------------------------------------------------------------------------------------

using System;
using System.Reflection;

namespace _08_22
{
    public class Class_08_22
    {
        public static void Main()
        {
            Type t = typeof(object);
            // 从文件中加载程序集 MyAssembly
            Assembly a = Assembly.LoadFrom("MyAssembly.dll");

            // 获取程序集中名为"MyClass"的 Type, 这里必须用全名
            Type type = a.GetType("_08_22.MyClass");

            // 动态创建 MyClass 的一个实例
            Object obj = Activator.CreateInstance(type);

            // 动态设置 obj 的字段
            FieldInfo field = type.GetField("MyField");
            field.SetValue(obj, "动态设置的字段");

            // 动态调用 obj 的方法
            MethodInfo method = type.GetMethod("MyMethod", new Type[0]);
            method.Invoke(obj, null);
            method = type.GetMethod("MyMethod", new Type[] { typeof(string) });
            method.Invoke(obj, new Object[] { "一个参数" });
        }
    }
}


友情链接

郑州大学软件学院 SpringWidgets-Blogger 徵信社 翻译公司 链接帮手网 行驶证字体 酷站目录 Friend Connectified