3.0.0 (2023-08-07)
Bug Fixes
Nullable<T>.Value
is no longer treated as a member (#575) (b238481)- Add comment (#496) (b3e1657)
- add private does not obscure test (#554) (f6d8d34)
- allow reference handling for generic and runtime target type mapping methods (#508) (34b237f)
- clone array when deepcloning is enabled and target is an IEnumerable (#431) (082d877)
- disable warning when iterating nullable array elements (#592) (8f37f44)
- exclude explicit casts when source type is object (#400) (3af9cc9)
- existing dictionary and enumerable mapping should respect enabled conversion types (#459) (86f48a2)
- generate nameof compatible member access (#539) (92673db)
- handle internal visibility correctly (#597) (5d4596a)
- ignore user implemented generic methods (#423) (408d03f)
- improve performance for member resolution (#603) (641c1bf)
- incorrect initialization for nullable nested memberpath unflattening (#591) (9b74e8f)
- lambdas should use correct scopes to generate names (#411) (e5d9bb2)
- make all attributes sealed (#614) (24614c0)
- map existing target sets correct (#500) (38e6556)
- only use instance constructors to create new object instances (#458) (848fb45)
- prevent ctormapping using inaccessible constructors (#456) (125742e)
- prevent duplicates attributes and base types for nested mappers (#544) (44667c8)
- prevent generation of empty if not null statements (#576) (8cbeff1)
- prevent mapping backing field (#608) (d768dbb)
- prevent throw throw being generated. (#415) (3c41c84)
- remove obsolete MapperIgnoreAttribute (#611) (c7a5099)
- required/init properties not using PropertyNameMappingStrategy (#505) (#556) (564a43e)
- seal all configuration attributes (#403) (cb837e0)
- support queryable projection mappings for derived type mappings (#412) (98a44a0)
- throw NullReferenceException for element access (#414) (78b2736)
- update IsImmutable to identify valid types on framework (#388) (b9a1f19)
- use ToList/ToArray to clone enumerable interfaces (#432) (f947cbf)
Features
- accept destination type as mapping method parameter (#398) (b17f666)
- add AllowNullPropertyAssignment option to disable assigning null values to nullable properties (#584) (0ccc734)
- add IgnoreObsoleteMembers (#392) (def10cf)
- add option to ignore enum values (#536) (3e2a2c8)
- add support for
Span
andMemory
mappings (#425) (ac254ca) - add support for user defined generic mapping methods (#461) (ddbc516)
- add tuple mapping support (#467) (208e8b4)
- Added MapEnumValueAttribute and support for explicit named enum value mapping (#468) (64e6c9d)
- added source generator benchmark (#419) (b6836b2)
- cache attribute symbols (#478) (fbe8ba1)
- diagnostic if an incompatible language version is used (#566) (38332a6)
- directly assign System.Uri and System.Version when deep cloning (#440) (c845b43)
- explicit enum mappings for byValue enum mappings (#489) (029dae2)
- ISet and IReadOnlySet support (#502) (9550ae4)
- Map all accessible members by default (#597) (#612) (3d2ed69)
- optimize BuildMemberPathCandidates performance (#480) (34b926b)
- optimize enum ByValueCheckDefined strategy and support flags (#510) (602c79d)
- support derived type configuration inheritance (#509) (66124f8)
- support derived type mappings (#366) (11995f0)
- Support enum mapping is defined check and fallback values (#491) (f0065c8)
- support for strict enum mappings (#356) (b13d364)
BREAKING CHANGES
- mark all attributes as sealed
- Include accessible internal and private members in mappings
- Obsolete MapperIgnoreAttribute is removed and needs to be replaced with MapperIgnoreTargetAttribute
An upgrade guide is available here.