SharpMapper will copy all properties from one object to another using the following rules:
- property is present on target object
- property name comparison is case insensitive
- reference objects are created and have to have a parameterless constructor
- the mapping is recursive following the object tree
- lists and dictionaries are copied and every object inside them is also created and copied
- objects are created only once, so if the same object appears in 2 properties of source, a single copy of it will be in the same 2 properties of target too
- value properties are copied
- nullable types can be copied to value types
- null values from source are set null on target object
- source and target classes can be different (it will only copy the matching properties)
- enums will also be mapped from and to strings and ints
- there is no need to pre-create a mapping
varfrom=newFoo{Name="foo",Age=1};varto=Mapper.Map<Foo>(from);varfrom=newFoo{Name="foo",Age=1};varto=Mapper.Copy(from,to);varfrom=newFoo{Name="foo",Age=1};Barto=Mapper.Map<Bar>(from);