We're using constructor-based dependency injection, AutoMapper and Unity on a codebase.
We have wrapped AutoMapper with a generic interface...
public interface IMapper<TSource, TDestination>
{
TDestination Map(TSource source);
}
And a class that implements this interface...
public class AutomaticMapper<TSource, TDestination> : IMapper<TSource, TDestination>
{
public TDestination Map(TSource source)
{
return AutoMapper.Mapper.Map<TSource, TDestination>(source);
}
}
This works well, but it means that for every mapping we define in the AutoMapper configuration we need to perform an additional UnityContainer.RegisterType
.
These type mappings are almost always of the form
container.RegisterType<IMapper<ClassA, ClassB>, AutomaticMapper<ClassA, ClassB>>();
Is there any way that we can tell unity to use a default type mapping that maps from IMapper
to AutomaticMapper
using the same TSource
and TDestination
for each of them?
We actually do almost the same exact thing. In Unity, you can say:
unityContainer.RegisterType(typeof(IMapper<,>), typeof(AutomaticMapper<,>));
There's an auto registration add-in for Unity that probably does what you want. Have a look at http://unity.codeplex.com/Thread/View.aspx?ThreadId=59418
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With