Vb.net 使用Activator.CreateInstance重做方法

Vb.net 使用Activator.CreateInstance重做方法,vb.net,Vb.net,如何使用Activator.CreateInstance重做此方法 Public Overridable Function setCreditType() As CreditType Select Case creditTypeId Case Is = 0 Return New NewCredit(Me) Case Is = 1 Return New ExecutiveProducer(Me

如何使用Activator.CreateInstance重做此方法

    Public Overridable Function setCreditType() As CreditType 
    Select Case creditTypeId 
        Case Is = 0 
            Return New NewCredit(Me) 
        Case Is = 1 
            Return New ExecutiveProducer(Me) 
        Case Is = 2 
            Return New Producer(Me) 
        Case Else 
            Return New NullCredit(Me) 
    End Select 
End Function 

最直接的回答是这样的:

Dim t As Type = GetType(Foo) 'Get Foo from somewhere
Dim ctorArgs() New As Object { Me }
Return (CreditType)Activator.CreateInstance(t, ctorArgs)

更重要的是,你为什么要这样做?我目前有一个105个类的列表,可能会增长,因此有人建议,找到一种使其动态的方法可能是一个好主意。我已经克服了一些语法问题,但现在我得到错误“找不到类型“type”上的构造函数”尽管我在基类型上有一个采用基类型的构造函数,但听起来您现在正试图构造System.type对象的实例,而不是实际的CreditType。你能发布你的代码吗?