然后加给窗体入一个新按钮,输入以下事件代码: '方法一 Dim t As Type = GetType(MyClassTest) o = System.Activator.CreateInstance(t) o.Hello() 第一行GetType(MyClassTest)函数就已经获得了我们创建的类的类型对象(C#中使用typeof函数)。接下来,我们用了System.Activator类的一个静态方法CreateInstance创建出对象实例,并将对象引用赋给o。Activator是一个用来在创建本地或远程对象的工具。运行这个程序,我们可以从Commond Window(命令窗口,一般在调试状态IDE的右下方)看到WriteLine函数运行的结果,可以看到正确建立的对象。 如果我们用的类具有比较复杂的构造函数,还可以使用构造函数创建所需的对象,代码如下: '方法二 Dim t As Type = GetType(MyClassTest) Dim c As System.Reflection.ConstructorInfo Dim types() As Type ReDim types(-1) c = t.GetConstructor(Reflection.BindingFlags.Instance _ Or Reflection.BindingFlags.Public, _ Nothing, Reflection.CallingConventions.HasThis, types, Nothing) Dim params() As Object ReDim params(-1) o.Hello() 这里我们创建一个System.Reflection.ConstructorInfo的对象,通过它可以获得类构造方法的信息。我们用的是Type类的GetConstructor方法来搜索可用的构造方法。 需要解释一下的是types()数组,这个数组是搜索构造方法所用的参数类型表。我们的类的构造方法没有参数,所以需要一个空但不为Nothing(C#中为null)的数组,ReDim types(-1)就是建立这种数组的语句,在C#中可写作: types = new Type[0]; 若构造方法是这样: Public Sub New(ByVal A As Integer, B As String) 那么相应的types数组就应该是 Dim types(1) As Type types(0) = GetType(Int32) types(1) = GetType(String) Reflection.BindingFlags.Instance和Reflection.BindingFlags.Public是一个位屏蔽,是指定搜索方式的选项。 |
正在阅读:.net中实现运行时从字符串动态创建对象.net中实现运行时从字符串动态创建对象
2004-02-14 09:34
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键