郁闷,听某某程序员大吹特吹反射的好处。问了下他怎么实现对象的动态创建,对方竟然一无所知。

回宿舍后找了相关动态创建对象的方法,还是没找到什么好的实现方法。使用老办法。如下:  

      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")

posted on 2008-08-31 11:04  大鱼  阅读(482)  评论(0编辑  收藏  举报