Внедрить AutoMapper

Я работал над внедрением AutoMapper в контроллеры. Мне нравится реализация сервера Code Camp. Он создает оболочку вокруг IMappingEngine AutoMapper. Внедрение зависимостей выполняется с использованием StructureMap. Но мне нужно использовать Castle Windsor для моего проекта. Итак, как мы реализуем следующую инъекцию и настройку зависимостей с помощью Windsor? Я не ищу построчную эквивалентную реализацию в замке Виндзор. Если вы хотите сделать это, пожалуйста, не стесняйтесь. Вместо этого, что является Виндзорским эквивалентом реестра и профиля StructureMap? Мне нужен профиль, чтобы определить CreateMap <> следующим образом.

Благодарю.

Диспетчер собраний:

public MeetingController(IMeetingMapper meetingMapper, ...)

Meeting Mapper:

public class MeetingMapper : IMeetingMapper
{

    private readonly IMappingEngine _mappingEngine;

    public MeetingMapper(IMappingEngine mappingEngine)
    {
      _mappingEngine = mappingEngine;
    }

    public MeetingInput Map(Meeting model)
    {
        return _mappingEngine.Map<Meeting, MeetingInput>(model);    
    }

    ......
}

Авто картографический реестр:

public class AutoMapperRegistry : Registry
{

    public AutoMapperRegistry()
    {
        ForRequestedType<IMappingEngine>().TheDefault.Is.ConstructedBy(() => Mapper.Engine);
    }
}

Встреча Mapper Профиль:

public class MeetingMapperProfile : Profile
{

    public static Func<Type, object> CreateDependencyCallback = (type) => Activator.CreateInstance(type);

    public T CreateDependency<T>()
    {
        return (T)CreateDependencyCallback(typeof(T));
    }

    protected override void Configure()
    {
        Mapper.CreateMap<MeetingInput, Meeting>().ConstructUsing(
            input => CreateDependency<IMeetingRepository>().GetById(input.Id) ?? new Meeting())

       .ForMember(x => x.UserGroup, o => o.MapFrom(x => x.UserGroupId))
       .ForMember(x => x.Address, o => o.Ignore())
       .ForMember(x => x.City, o => o.Ignore())
       .ForMember(x => x.Region, o => o.Ignore())
       .ForMember(x => x.PostalCode, o => o.Ignore())
       .ForMember(x => x.ChangeAuditInfo, o => o.Ignore());
    }
}

Ответы на вопрос(3)

Ваш ответ на вопрос