Skip to content

Known Limitations

Arnel Robles edited this page Sep 28, 2026 · 1 revision

Known Limitations

Feature Limitations

❌ Not Supported:

  • Async mapping operations
  • Source/destination value injection (context passing)
  • Open generic types
  • Explicit type conversion configuration beyond built-ins

✅ Supported via Extension Packages:

  • Custom naming conventions (PascalCase ↔ snake_case): Mapsicle.NamingConventions
  • Post-mapping validation: Mapsicle.Validation

⚠️ Partial Support:

  • Cycles are not preserved. A self-referencing object maps as nested copies down to MaxDepth, then stops at the repeated instance, where AutoMapper keeps the reference.
  • EF Core ProjectTo works with ForMember expressions, but not ResolveUsing delegates

Behavioral Differences from AutoMapper

  • Circular references: Expanded to MaxDepth nested copies, then the repeated member is left null. Nothing throws, and the reference is not preserved
  • Null safety: More aggressive null-safe navigation (fewer NullReferenceException). A null reference-typed source mapped to a string destination yields null rather than throwing.
  • Map(destination) is not atomic: it writes properties in order, so a setter that throws part-way leaves the earlier ones already written. Map into a fresh instance if you need all-or-nothing.
  • Exceptions from your accessors propagate unwrapped: a getter throwing InvalidOperationException surfaces as InvalidOperationException, not wrapped in TargetInvocationException.
  • Unmapped properties: Silent (use GetUnmappedProperties for validation)
  • Cache behavior: Default is unbounded (must opt-in to LRU)

Platform Support

.NET Version Mapsicle Support
.NET 10.0 ✅ Fully supported, tested on every build
.NET 8.0 ✅ Fully supported, tested on every build (end of life 10 Nov 2026)
.NET 6.0-7.0 ✅ Via .NET Standard 2.0
.NET 5.0 ✅ Via .NET Standard 2.0
.NET Core 2.0+ ✅ Via .NET Standard 2.0
.NET Framework 4.6.1+ ✅ Via .NET Standard 2.0

The netstandard2.0 assemblies are exercised by their own test project, which forces that asset rather than the net8.0 one and asserts it really loaded it. Before 2.0.0 they were built, packed and published without a test ever loading them.


Clone this wiki locally