Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试使用automapper和castle windsor注入进行映射时引发异常_C#_Inversion Of Control_Castle Windsor_Automapper - Fatal编程技术网

C# 尝试使用automapper和castle windsor注入进行映射时引发异常

C# 尝试使用automapper和castle windsor注入进行映射时引发异常,c#,inversion-of-control,castle-windsor,automapper,C#,Inversion Of Control,Castle Windsor,Automapper,我得到以下错误 Missing type map configuration or unsupported mapping. Mapping types: RegistrationViewModel -> Member 这是我的模型 public class Member { public int ID { get; set; } public string EmailAddress { get; set; } public string Password {

我得到以下错误

Missing type map configuration or unsupported mapping.

Mapping types:
RegistrationViewModel -> Member
这是我的模型

public class Member
{
    public int ID { get; set; }
    public string EmailAddress { get; set; }
    public string Password { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public Gender Gender { get; set; }
    public int AddressId { get; set; }
    public virtual Address Address { get; set; }
    public DateTime DateCreated { get; set; }
}

public class RegistrationViewModel
{
    public string EmailAddress { get; set; }
    public string Password { get; set; }
    public string ConfirmPassword { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Postcode { get; set; }
    public Title Title { get; set; }
}
这是我的地图

public class MemberMapper : Profile
{
    protected override void Configure()
    {
        Mapper.CreateMap<RegistrationViewModel, Member>()
            .ForMember(x => x.Address, y => y.Ignore())
            .ForMember(x => x.Gender, y => y.Ignore());
    }
}

我觉得这可能过于复杂了,但我真的希望能够注入
IMapperEngine
,以便在单元测试中模拟它。如果没有这一点,我将不得不退出。

我没有答案给你,但这可能会对你有所帮助:你可能是对的,我今天早些时候曾试图完成这一点,但似乎没有帮助。我可能应该再看一遍,因为他确实写过automapper
public class AutoMapperInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Register(
            Component.For<ConfigurationStore>()
                .OnlyNewServices()
                .ImplementedBy<ConfigurationStore>()
                // .Properties(PropertyFilter.IgnoreAll) // Uncomment this line to fix the problem (https://groups.google.com/d/msg/castle-project-users/FotV-tBtGiQ/id31pps10EsJ)
                .DependsOn(
                    Property.ForKey<ITypeMapFactory>().Eq(new TypeMapFactory()),
                    Property.ForKey<IEnumerable<IObjectMapper>>().Eq(MapperRegistry.AllMappers())
                ),
            Component.For<IConfigurationProvider>()
                .OnlyNewServices()
                .UsingFactoryMethod(kernel => kernel.Resolve<ConfigurationStore>())
                .LifeStyle.Singleton,
            Component.For<IConfiguration>()
                .OnlyNewServices()
                .UsingFactoryMethod(kernel => kernel.Resolve<ConfigurationStore>())
                .LifeStyle.Singleton,
            Component.For<IMappingEngine>()
                .OnlyNewServices()
                .ImplementedBy<MappingEngine>()
                .LifeStyle.Singleton,
            Classes.FromAssemblyContaining<MemberMapper>()
                .BasedOn<Profile>().WithServiceBase()
            );

        var profiles = container.ResolveAll<Profile>();
        var config = container.Resolve<IConfiguration>();

        foreach (var profile in profiles)
        {
            config.AddProfile(profile);
        }
    }
public MemberService(IGenericRepository<Member> repository, IMappingEngine mapper) :
        base(repository)
{
    this.mapper = mapper;
}

public void SaveNewUser(RegistrationViewModel registrationViewModel)
{
    var newMember = mapper.Map<Member>(registrationViewModel);

    ...
}