C# Activator.CreateInstance 动态创建类的实例(一)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Kernel.SimpleLibrary { public class Person { private string name; public Person(){ } public Person(string name) { this.name = name; } public string Name { get { return this.name; } set { this.name = value; } } public override string ToString() { return this.name; } } }
using System; using System.Reflection; using System.Runtime.Remoting; public class Program { static void Main(string[] args) { //创建在指定程序集中定义的指定类型的新实例 //assemblyName = 命名空间,typeName = 命名空间.类名 ObjectHandle handle = Activator.CreateInstance("Kernel.SimpleLibrary", "Kernel.SimpleLibrary.Person"); Object p = handle.Unwrap(); Type t = p.GetType(); PropertyInfo prop = t.GetProperty("Name"); if (prop != null) prop.SetValue(p, "Hello world!"); MethodInfo method = t.GetMethod("ToString"); Object retVal = method.Invoke(p, null); if (retVal != null) Console.WriteLine(retVal); } }