首先新建一个类库,将它生成ClassLibrary1.dll using System; using System.Collections.Generic; using System.Text; namespace WebTest { public class ReflectTest { private string word; public String Word { get { return word; } set { word = value; } } public ReflectTest(string w) { this.word = w; } public ReflectTest() { this.word = "word"; } public string WriteString(String s) { return "Welcome + " + s; } public static string WriteStatic(String name) { return "Static : Welcome + " + name; } public string WriteNoPara() { return "NoPara : Welcome !"; } private String WritePrivate() { return "Private "; } } public class TestClass { } } 然后新建立一个项目以入该dll(代码里有e文注释) using System; using System.Collections.Generic; using System.Text; using System.Reflection; namespace TestReflect { class Program { static void Main(string[] args) { System.Reflection.Assembly ass; Type type; Object obj; try { ass = Assembly.Load("ClassLibrary1"); Console.WriteLine("-----------All the class In this dll-----------"); foreach (Type t in ass.GetTypes()) { Console.WriteLine(t.Name); } Console.WriteLine("---------All the Module In this dll----------"); Module[] miar = ass.GetModules(); foreach (Module m in miar) { Console.WriteLine(m.Name); } type = ass.GetType("WebTest.ReflectTest"); Console.WriteLine("-----------All the method In WebTest.ReflectTest-----------"); MethodInfo[] miarr = type.GetMethods(); foreach (MethodInfo m in miarr) { Console.WriteLine(m.Name); } Console.WriteLine("-----------All the Property In WebTest.ReflectTest-----------"); PropertyInfo[] piarr = type.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (PropertyInfo p in piarr) { Console.WriteLine(p.Name); } Console.WriteLine("----------Call some methods in WebTest.ReflectTest-----------"); obj = ass.CreateInstance("WebTest.ReflectTest"); MethodInfo method = type.GetMethod("WriteString"); String s = (String)method.Invoke(obj, new string[] { "WriteString" }); Console.WriteLine(s); method = type.GetMethod("WriteStatic"); s = (String)method.Invoke(null, new string[] { "WriteName" }); Console.WriteLine(s); method = type.GetMethod("WriteNoPara"); s = (String)method.Invoke(obj, null); Console.WriteLine(s); method = type.GetMethod("WritePrivate", BindingFlags.Instance | BindingFlags.NonPublic); s = (String)method.Invoke(obj, null); Console.WriteLine(s); Console.WriteLine("---------Use the Property---------"); PropertyInfo pi = type.GetProperty("Word"); pi.SetValue(obj, "Word", null); Console.WriteLine(pi.GetValue(obj,null)); Console.WriteLine("--------- Get All Constructor ----------"); ConstructorInfo[] ci = type.GetConstructors(); foreach (ConstructorInfo c in ci) { Console.WriteLine(c.ToString()); } Console.WriteLine("-------- Construct --------"); ConstructorInfo ci1 = type.GetConstructor(new Type[] { typeof(string) }); WebTest.ReflectTest wr1 = (WebTest.ReflectTest)ci1.Invoke(new string[] { "XXX" }); Console.WriteLine(wr1.Word); ConstructorInfo ci2 = type.GetConstructor(new Type[0] ); WebTest.ReflectTest wr2 = (WebTest.ReflectTest)ci2.Invoke(null); Console.WriteLine(wr2.Word); } catch (Exception ex) { Console.WriteLine(ex); } finally { ass = null; type = null; obj = null; } } } } 谢谢.