C'est clair que c'est pas forcément évident à suivre 
De mon côté j'utilise quelque chose qui ressemble à ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Friend Shared Function GetParser(typeName As String) As DTOParser
Dim currentAssembly = Assembly.GetExecutingAssembly()
For Each type As Type In currentAssembly.GetTypes()
' On supprime le préfixe "DTO" pour ne garder que le nom de l'entité
Dim entityName = typeName.Replace("DTO", String.Empty)
If type.Name.Contains(entityName) OrElse type.FullName.Contains(entityName) Then
' On applique le préfixe "DTOParser_" afin de mapper l'entité sur son parser correspondant
Dim newValue = "DTOParser_" & entityName
Dim newType = Activator.CreateInstance(currentAssembly.FullName, currentAssembly.GetName().Name + "." & newValue, Nothing)
Return DirectCast(newType.Unwrap(), DTOParser)
End If
Next
Return Nothing
End Function |
Cette solution oblige à respecter quelques règles de nommage...
Appel depuis DALBase :
Dim parser As DTOParser = DTOParserFactory.GetParser(GetType(T).Name)
Partager