郁闷,听某某程序员大吹特吹反射的好处。问了下他怎么实现对象的动态创建,对方竟然一无所知。
回宿舍后找了相关动态创建对象的方法,还是没找到什么好的实现方法。使用老办法。如下:
Class1 asm = Assembly.Load("TestDLL").CreateInstance("TestDLL.Class1") as Class1;
Type t = Type.GetType("System.Data.DataTable,System.Data,Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089");
后建创建一简单动态对象工厂:
public static T ObjectFactory<T>(string assemblyName,string typeName) where T : class
{
return Assembly.Load(assemblyName).CreateInstance(typeName) as T;
}
调用:Class1 class1 = ObjectFactory<Class1>("TestDLL", "TestDLL.Class1");
另:在反射功能的测试过程中发现,ASP.NET生成后,站点页面和站点中类所在的程序集是不一样的。
类似这样的GetType方法是不行的。
Type tt = Type.GetType("System.Data.DataTable");
Activator.CreateInstance("TestDLL","TestDLL.Class1")