So heute habe ich ein weinig mit der Smart Client Software Factory gearbeitet.
Als ich nun einen EntityMapperTranslator erstellen wollte hat noch alles geklappt nur leider wollte er diesen nicht finden als ich Ihn aufgerufen habe.
Ein Eintrag im Forum gab dann aufschluss über das Problem:
http://www.codeplex.com/smartclient/Thread/View.aspx?ThreadId=10938
Die Basisdateien enthalten im VB Code ein paar kleine Fehler:
EntityMapperTranslator.vb
Public MustInherit Class EntityMapperTranslator(Of TBusinessEntity, TServiceEntity) Inherits BaseTranslator Public Overloads Overrides Function CanTranslate(ByVal targetType As System.Type, ByVal sourceType As System.Type) As Boolean Return (targetType Is GetType(TBusinessEntity) AndAlso sourceType Is GetType(TServiceEntity)) OrElse _ (targetType Is GetType(TServiceEntity) AndAlso sourceType Is GetType(TBusinessEntity)) End Function Public Overloads Overrides Function Translate(ByVal service As [Interface].Services.IEntityTranslatorService, ByVal targetType As System.Type, ByVal source As Object) As Object If targetType Is GetType(TBusinessEntity) Then Return ServiceToBusiness(service, CType(source, TServiceEntity)) End If If targetType Is GetType(TServiceEntity) Then Return BusinessToService(service, CType(source, TBusinessEntity)) End If Throw New EntityTranslatorException() End Function Protected MustOverride Function BusinessToService(ByVal service As IEntityTranslatorService, ByVal value As TBusinessEntity) As TServiceEntity Protected MustOverride Function ServiceToBusiness(ByVal service As IEntityTranslatorService, ByVal value As TServiceEntity) As TBusinessEntity End Class
Bei VB kann man leider nicht mit dem TypeOf Operator arbeiten um diesen Vergleich auszuführen.
EntityMapperTranslaterService.vb
Public Function CanTranslate(ByVal targetType As System.Type, ByVal sourceType As System.Type) As Boolean Implements [Interface].Services.IEntityTranslatorService.CanTranslate
If targetType Is Nothing Then
Throw New ArgumentNullException("targetType")
End If
If sourceType Is Nothing Then
Throw New ArgumentNullException("sourceType")
End If
Return IsArrayConversionPossible(targetType, sourceType) OrElse FindTranslator(targetType, sourceType) IsNot Nothing
End Function
Hier muss es isNot anstatt Is heissen.
So mal weiter üben. 🙂