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);
...
}