All Projects → alsami → AutoMapper.Contrib.Autofac.DependencyInjection

alsami / AutoMapper.Contrib.Autofac.DependencyInjection

Licence: MIT license
Autofac plug-in for AutoMapper.

Programming Languages

C#
18002 projects
shell
77523 projects

Projects that are alternatives of or similar to AutoMapper.Contrib.Autofac.DependencyInjection

Blog.core
💖 ASP.NET Core 6.0 全家桶教程,前后端分离后端接口,vue教程姊妹篇,官方文档:
Stars: ✭ 3,542 (+25200%)
Mutual labels:  ioc, autofac, automapper
maruko
maruko是一个基于dotnetcore的快速开发框架,他实现freesql,automap,模块化,DDD 设计思想等常用性功能.
Stars: ✭ 29 (+107.14%)
Mutual labels:  autofac, automapper
RCM
RCM is a simple CRM application designed for Auto Parts Store made with ASP.NET Core based on DDD, CQRS and SOLID Principles.
Stars: ✭ 29 (+107.14%)
Mutual labels:  ioc, automapper
eixample
Multi-Tenant .NET 6 Architecture (Angular, Vue, React)
Stars: ✭ 61 (+335.71%)
Mutual labels:  autofac, automapper
KickStart
Application initialization helper
Stars: ✭ 42 (+200%)
Mutual labels:  autofac, automapper
Quicklib
Quick development library (AutoMapper, LinQ, IOC Dependency Injection, MemoryCache, Scheduled tasks, Config, Serializers, etc) with crossplatform support for Delphi/Firemonkey (Windows,Linux,OSX/IOS/Android) and freepascal (Windows/Linux).
Stars: ✭ 274 (+1857.14%)
Mutual labels:  ioc, automapper
Aspnetcore Ddd
Full ASP.NET Core 3.1 LTS application with DDD, CQRS and Event Sourcing
Stars: ✭ 88 (+528.57%)
Mutual labels:  ioc, automapper
ArchitectNow.ApiStarter
Sample ASP.NET Core 2 API Setup used by ArchitectNow for corresponding workshop presentations
Stars: ✭ 35 (+150%)
Mutual labels:  autofac, automapper
kekiri
A .NET framework that supports writing low-ceremony BDD tests using Gherkin language
Stars: ✭ 19 (+35.71%)
Mutual labels:  ioc
vue3-oop
使用类和依赖注入写vue组件
Stars: ✭ 90 (+542.86%)
Mutual labels:  ioc
doteasy.rpc
Inspired by microservices, a lightweight framework that looks like a rabbit, based on NET Core 2.0 Standard 2 core library
Stars: ✭ 62 (+342.86%)
Mutual labels:  autofac
CodeProject
Common code for unity project develop.
Stars: ✭ 28 (+100%)
Mutual labels:  autofac
dioc
A dart simple dependency container based on code generation.
Stars: ✭ 47 (+235.71%)
Mutual labels:  ioc
firmeve
a out-of-the-box, full-featured go framework supporting http, http2, websocket, tcp, udp, rpc and microservice
Stars: ✭ 36 (+157.14%)
Mutual labels:  ioc
tsdi
Dependency Injection container (IoC) for TypeScript
Stars: ✭ 50 (+257.14%)
Mutual labels:  ioc
Caliburn.Light
The magic-free Caliburn.Light, a powerful framework designed for building applications across current XAML platforms.
Stars: ✭ 64 (+357.14%)
Mutual labels:  ioc
Reflex
Minimal dependency injection framework for Unity
Stars: ✭ 263 (+1778.57%)
Mutual labels:  ioc
DependencyInjector
Lightweight dependency injector
Stars: ✭ 30 (+114.29%)
Mutual labels:  ioc
ZeroIoC
ZeroIoC is reflectionless IoC Container for .NET
Stars: ✭ 22 (+57.14%)
Mutual labels:  ioc
Mimir
OSINT Threat Intel Interface - CLI for HoneyDB
Stars: ✭ 104 (+642.86%)
Mutual labels:  ioc

AutoMapper.Contrib.Autofac.DependencyInjection

Build Application codecov

NuGet NuGet

This is a cross platform library, written in .netstandard 2.0, that serves as an extension for autofac's containerbuilder. It will register all necessary classes and interfaces of Jimmy Bogard's AutoMapper implementation to the autofac-container so you can use AutoMapper and object-mapping right ahead without worrying about setting up required infrastructure code.

Installation

This package is available via nuget. You can install it using Visual-Studio-Nuget-Browser or by using the dotnet-cli

dotnet add package AutoMapper.Contrib.Autofac.DependencyInjection

If you want to add a specific version of this package

dotnet add package AutoMapper.Contrib.Autofac.DependencyInjection --version 1.0.0

For more information please visit the official dotnet-cli documentation.

Usage sample

After installing the package you define your entities and dtos and create profiles for them.

public class Customer
{
	public Guid Id { get; }
	public string Name { get; }
	
	public Customer(Guid id, string name)
	{
		Id = id;
		Name = name;
	}
}

public class CustomerDto
{
	public Guid Id { get; }
	public string Name { get; }

	public CustomerDto(Guid id, string name)
	{
		Id = id;
		Name = name;
	}
}

public class CustomerProfile : Profile 
{
	public CustomerProfile()
	{
		CreateMap<Customer, CustomerDto>()
			.ConstructUsing(user => new UserDto(user.Id, user.Name))
			.ReverseMap()
			.ConstructUsing(userDto => new User(userDto.Id, userDto.Name));
	}
}

public static class Program
{
	public static void Main(string args[])
	{
		var containerBuilder = new ContainerBuilder();
		// here you have to pass in the assembly (or assemblies) containing AutoMapper types
		// stuff like profiles, resolvers and type-converters will be added by this function
		containerBuilder.RegisterAutoMapper(typeof(Program).Assembly);
		
		var container = containerBuilder.Build();

		var mapper = container.Resolve<IMapper>();

		var customer = new Customer(Guid.NewGuid(), "Google");

		var customerDto = mapper.Map<CustomerDto>(customer);
	}
}

Support for Property Injection

You can set propertiesAutowired to true to enable property based injection, just modify the prior example like so:

public static class Program
{
	public static void Main(string args[])
	{
		var containerBuilder = new ContainerBuilder();
		
		// Update this line with the setting:
		containerBuilder.RegisterAutoMapper(typeof(Program).Assembly, propertiesAutowired: true);
		
		var container = containerBuilder.Build();

		var mapper = container.Resolve<IMapper>();

		var customer = new Customer(Guid.NewGuid(), "Google");

		var customerDto = mapper.Map<CustomerDto>(customer);
	}
}

Validating your configuration

AutoMapper allows the user to validate their mappings. This should only be done within a test project, since it's time-consuming

var containerBuilder = new ContainerBuilder();
containerBuilder.RegisterAutoMapper(typeof(Program).Assembly);

var container = containerBuilder.Build();
var mapperConfiguration = container.Resolve<MapperConfiguration>();

// this line will throw when mappings are not working as expected
// it's wise to write a test for that, which is always executed within a CI pipeline for your project.
mapperConfiguration.AssertConfigurationIsValid();
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].