0

エンティティ名、つまり A1AllocationHelp1Entity が入力された ListBox があります。

選択時に、その文字列名を渡して EntityBase2 タイプを取得する必要があります。

リフレクションを使用して取得できます:

Public Function CreateEntity(ByVal entityName As String) As EntityBase2
    Dim myAssembly = Assembly.LoadFrom(DALFileName)
    Dim assemblyName = Split(dynamicAssembly.FullName, ",")(0)
    Dim myEntityName = assemblyName & ".EntityClasses." & entityName
    Dim handle = Activator.CreateInstance(assemblyName, myEntityName)
    Dim entity = CType(handle.Unwrap(), EntityBase2)
    Return entity
End Function

しかし、llblgen が生成する型がそこにある場合、リフレクションに頼らずに何らかの方法でインスタンス化できるようにしたいと考えています。

それを行う方法はありますか?

4

1 に答える 1

0

そのリフェクション コードはすべて 1 行で置き換えることができます

Return GeneralEntityFactory.Create( _
    CType(System.Enum.Parse(GetType(EntityType), entityName), EntityType))

これは同じタイプを返し、私が探していた答えです。

于 2013-03-28T15:54:03.533 に答える