|
|
|
@ -326,3 +326,51 @@ A single class may implement more than one `IObjectMapper<TSource, TDestination> |
|
|
|
|
|
|
|
> This approach is powerful since `MyCustomUserMapper` can inject any other service and use in the `Map` methods. |
|
|
|
|
|
|
|
#### Collection Mapping |
|
|
|
|
|
|
|
You only requires configuration of element types, not of any array or list type that might be used. |
|
|
|
|
|
|
|
For example, we might have a simple source and destination type: |
|
|
|
|
|
|
|
````csharp |
|
|
|
public class Source |
|
|
|
{ |
|
|
|
public int Value { get; set; } |
|
|
|
} |
|
|
|
|
|
|
|
public class Destination |
|
|
|
{ |
|
|
|
public int Value { get; set; } |
|
|
|
} |
|
|
|
```` |
|
|
|
|
|
|
|
All the basic generic collection types are supported: |
|
|
|
|
|
|
|
````csharp |
|
|
|
IObjectMapper _objectMapper //inject it. |
|
|
|
|
|
|
|
var sources = new[] |
|
|
|
{ |
|
|
|
new Source { Value = 5 }, |
|
|
|
new Source { Value = 6 }, |
|
|
|
new Source { Value = 7 } |
|
|
|
}; |
|
|
|
|
|
|
|
IEnumerable<Destination> ienumerableDest = _objectMapper.Map<Source[], IEnumerable<Destination>>(sources); |
|
|
|
ICollection<Destination> icollectionDest = _objectMapper.Map<Source[], ICollection<Destination>>(sources); |
|
|
|
ICollection<Destination> collectionDest = _objectMapper.Map<Source[], Collection<Destination>>(sources); |
|
|
|
IList<Destination> ilistDest = _objectMapper.Map<Source[], IList<Destination>>(sources); |
|
|
|
List<Destination> listDest = _objectMapper.Map<Source[], List<Destination>>(sources); |
|
|
|
Destination[] arrayDest = _objectMapper.Map<Source[], Destination[]>(sources); |
|
|
|
```` |
|
|
|
|
|
|
|
To be specific, the source collection types supported include: |
|
|
|
|
|
|
|
* `IEnumerable<T>` |
|
|
|
* `ICollection<T>` |
|
|
|
* `Collection<T>` |
|
|
|
* `IList<T>` |
|
|
|
* `List<T>` |
|
|
|
* `T[]` |
|
|
|
|
|
|
|
> When mapping to an existing collection, the destination collection is cleared first. |
|
|
|
|