Coder Social home page Coder Social logo

moll's Introduction

Moll

A simple .NET object mapper framework, intended to be used along with an IoC container.

Why?

Moll was built after spending many years using AutoMapper and eventually running into issues maintaing large numbers of object mapping definitions as a project grows.

Moll takes a completely differently approach to declaring and executing mappings. The core of Moll is the IMapper<TSrc, TDest> interface. Instead of having a static method that executes the mapping, the intention is to use dependency injection to get the correct instance of that interface. This means that your mapper is now just a normal, test-able class like the rest of your business logic instead of being some custom DSL.

For convenience there is a default implementation of the IMapper<TSrc, TDest> interface, AutomaticMapper<TSrc, TDest> that uses reflection to automatically map properties whose name and type match. It also provides an extension point for doing additional custom mapping if needed.

The AutomaticMapper<TSrc, TDest> is intended to be used for simple objects in sections of code that are not sensitive to huge performance concerns. If you need to map a huge number of objects or have very custom needs then you'll probably just want to make your own custom implementation of the IMapper<TSrc, TDest> interface.

Usage

PM> Install-Package Moll

Then start making your own mappers, either by using AutomaticMapper<TSrc, TDest> as a base or building your own custom implementation of the IMapper<TSrc, TDest> interface.

You can then just directly new up instances of those mappers and use them, or configure your IoC container so that it knows about the mappers and let it handle injecting the proper implementation of any mappers that you need. This is definitely the suggested route, especially because it makes nested mappers trivial since the mappers can have any dependencies injected that they need (including other mappers).

What does the name Moll mean?

Herman Moll was an early cartographer who published one of the most famous early maps of North America, unofficially known as the "Beaver Map".

moll's People

Contributors

joeyb avatar

Watchers

 avatar  avatar  avatar

moll's Issues

Cache PropertyInfos in AutomaticMapper

The AutomaticMapper<TSrc, TDest> class currently does no caching and re-grabs the PropertyInfos for the src and dest each time the mapping is run. This can be sped up by caching those during the first mapping so that subsequent runs don't need to do it.

I'm still trying to decide whether the PropertyInfos should be cached per instance or statically. I'm leaning towards doing it per instance because I think that fits the philosophy of the project better by leaving that cache lifespan decision up to the IoC container. That would allow the cache to actually be garbage collected if needed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.