Schlagwort: scsf

  • SCSF: EntityMapperTranslator Fehler im VB Code

    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. 🙂