J'essaie de mapper un objet DTO à un objet CSLA.NET (voir: http://www.lhotka.net/cslanet/). Par souci de cette question, j'utilise l'exemple d'application fourni par Lhotka avec son framework. Ci-dessous un exemple de classes que je utilise (j'ai enlevé la majorité des propriétés et méthodes pour plus de clarté):Mappage aux objets CSLA à l'aide d'Automapper
<Serializable()> _
Public Class Project
Inherits BusinessBase(Of Project)
Private mId As Guid = Guid.NewGuid
Private mName As String = ""
Private mResources As ProjectResources = _
ProjectResources.NewProjectResources()
<System.ComponentModel.DataObjectField(True, True)> _
Public ReadOnly Property Id() As Guid
<System.Runtime.CompilerServices.MethodImpl(Runtime.CompilerServices.MethodImplOptions.NoInlining)> _
Get
'CanReadProperty(True)
Return mId
End Get
End Property
Public Property Name() As String
<System.Runtime.CompilerServices.MethodImpl(Runtime.CompilerServices.MethodImplOptions.NoInlining)> _
Get
'CanReadProperty(True)
Return mName
End Get
<System.Runtime.CompilerServices.MethodImpl(Runtime.CompilerServices.MethodImplOptions.NoInlining)> _
Set(ByVal Value As String)
'CanWriteProperty(True)
If Value Is Nothing Then Value = ""
If mName <> Value Then
mName = Value
PropertyHasChanged()
End If
End Set
End Property
Public ReadOnly Property Resources() As ProjectResources
Get
Return mResources
End Get
End Property
End Class
Public Class ProjectDTO
Private _id As Guid
Public Property Id() As Guid
Get
Return _id
End Get
Set(ByVal value As Guid)
_id = value
End Set
End Property
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal value As String)
_name = value
End Set
End Property
Private _resources As New List(Of ProjectResourceDTO)()
Public Property MyResources() As List(Of ProjectResourceDTO)
Get
Return _resources
End Get
Set(ByVal value As List(Of ProjectResourceDTO))
_resources = value
End Set
End Property
End Class
Mapper.CreateMap(Of ProjectDTO, Project)().ConstructUsing(Function(src As ProjectDTO) Project.NewProject())
Mapper.CreateMap(Of ProjectResourceDTO, ProjectResource)()
Mapper.CreateMap(Of ResourceDTO, Resource)()
La question que je ressentais est liée à la cartographie des ressources propriété en lecture seule qui est une collection héritant de BusinessListBase. La seule façon d'ajouter des éléments à cette collection consiste à exécuter la méthode Assign (resourceId).
Est-ce que quelqu'un a une idée sur la façon dont je peux mapper l'objet DTO à l'objet CSLA. C'est à dire. Comment dois-je configurer le mappeur? Veuillez noter que l'utilisation d'un résolveur pour le membre Resources n'a pas aidé dans ce cas particulier.
Merci!
Zen
Merci Ed! Je doutais vraiment qu'il y aurait une solution pour cela. CSLA.NET a sa propre façon de faire les choses. Malheureusement, je n'ai pas assez de réputations pour vous accepter de répondre ... – UncleZen