Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - NLHaarP/Mapster: A fast, fun and stimulating object to object Mapper · GitHub
Skip to content

Repository files navigation

Mapster Icon

Mapster - The Mapper of Your Domain

Writing mapping methods is a machine job. Do not waste your time, let Mapster do it.

NuGet Sources

NuGet Packages

PackageStablePre-release
MapsterMapsterMapster
Mapster.CoreMapster.CoreMapster.Core
Mapster.DependencyInjectionMapster.DependencyInjectionMapster.DependencyInjection
Mapster.EFCoreMapster.EFCoreMapster.EFCore
Mapster.EF6Mapster.EF6Mapster.EF6
Mapster.JsonNetMapster.JsonNetMapster.JsonNet
Mapster.ImmutableMapster.ImmutableMapster.Immutable
Mapster.DiagnosticsMapster.Diagnostics
ExpressionDebuggerExpressionDebugger

DotNet Tools

ToolStablePre-release
Mapster.ToolMapster.ToolMapster.Tool

Installation

Install Mapster with the NuGet CLI:

Install-Package Mapster

Or use the .NET core CLI to install Mapster:

dotnet add package Mapster --project <PROJECT_NAME>

Basic usage

Mapping to a new object

Mapster creates the destination object and maps values to it.

vardestObject=sourceObject.Adapt<Destination>();

Mapping to an existing object

You create the object, Mapster maps to the object.

sourceObject.Adapt(destObject);

Use Mapster with Dependency Injection

You can get your IMapper instance via dependency injection, so you do not have to change code, when migrating to mapster from automapper!

Just add Mapster to service collection:

services.AddMapster();

And use it with DI in your Project:

publicclassTest{publicTest(IMappermapper){varsourceObject=mapper.Adapt<Destination>();}}

Queryable Extensions

Mapster also provides extensions to map queryables.

using(MyDbContextcontext=newMyDbContext()){// Build a Select Expression from DTOvardestinations=context.Sources.ProjectToType<Destination>().ToList();// Versus creating by hand:vardestinations=context.Sources.Select(c =>newDestination{Id=c.Id,Name=c.Name,Surname=c.Surname,
....
}).ToList();}

Generating models & mappers

No need to write your own DTO classes. Mapster provides Mapster.Tool to help you generating models. And if you would like to have explicit mapping, Mapster also generates mapper class for you.

[AdaptTo("[name]Dto"),GenerateMapper]publicclassStudent{
...}

Then Mapster will generate for you:

publicclassStudentDto{
...}publicstaticclassStudentMapper{publicstaticStudentDtoAdaptToDto(thisStudentpoco){ ...}publicstaticStudentDtoAdaptTo(thisStudentpoco,StudentDtodto){ ...}publicstaticExpression<Func<Student,StudentDto>>ProjectToDto=> ...}

What's new

Why Mapster?

Performance & Memory efficient

Mapster was designed to be efficient on both speed and memory. You could gain a 4x performance improvement whilst using only 1/3 of memory. And you could gain up to 12x faster performance with:

MethodMeanStdDevErrorGen 0Gen 1Gen 2Allocated
'Mapster 6.0.0'108.59 ms1.198 ms1.811 ms31000.0000--124.36 MB
'Mapster 6.0.0 (Roslyn)'38.45 ms0.494 ms0.830 ms31142.8571--124.36 MB
'Mapster 6.0.0 (FEC)'37.03 ms0.281 ms0.472 ms29642.8571--118.26 MB
'Mapster 6.0.0 (Codegen)'34.16 ms0.209 ms0.316 ms31133.3333--124.36 MB
'ExpressMapper 1.9.1'205.78 ms5.357 ms8.098 ms59000.0000--236.51 MB
'AutoMapper 10.0.0'420.97 ms23.266 ms35.174 ms87000.0000--350.95 MB

Step into debugging

Step-into debugging lets you debug your mapping and inspect values just like your code.

inspect-generated-source-code-while-debugging

Code Generation

Code generation allows you to

  • Validate mapping at compile time
  • Getting raw performance
  • Seeing your mapping code & debugging
  • Finding usage of your models' properties

There are currently two tools which you can choose based on your preferences.

Change logs

https://github.com/MapsterMapper/Mapster/releases

Usage Guides with Translations

Acknowledgements

JetBrains kindly provides Mapster with a free open-source licence for their Resharper and Rider.

  • Resharper makes Visual Studio a much better IDE
  • Rider is fast & powerful cross platform .NET IDE

About

A fast, fun and stimulating object to object Mapper

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages