Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jbogard/b28a1d88e7ecb833544020a8d9d76173 to your computer and use it in GitHub Desktop.
Save jbogard/b28a1d88e7ecb833544020a8d9d76173 to your computer and use it in GitHub Desktop.
Automapper StackOverflowException
public class UserModel
{
public virtual CategoryModel Category { get; set; }
public virtual UserGroupModel Group { get; set; }
}
public class CategoryModel
{
public CategoryModel Category { get; set; }
}
public class UserGroupModel
{
public UserGroupModel()
{
Users = new List<UserModel>();
};
public virtual ICollection<UserModel> Users { get; set; }
}
public class UserDto
{
public virtual CategoryDto Category { get; set; }
public virtual UserGroupDto Group { get; set; }
}
public class CategoryDto
{
public CategoryDto Category { get; set; }
}
public class UserGroupDto
{
public UserGroupDto()
{
Users = new List<UserDto>();
};
public virtual ICollection<UserDto> Users { get; set; }
}
public static class AutoMapping
{
public static void Config()
{
Mapper.Initialize(cfg =>
{
cfg.CreateMap<CategoryModel, CategoryDto>(MemberList.Destination).PreserveReferences().ReverseMap();
cfg.CreateMap<UserModel, UserDto>(MemberList.Destination).PreserveReferences().ReverseMap();
cfg.CreateMap<UserGroupModel, UserGroupDto>(MemberList.Destination).PreserveReferences().ReverseMap();
};
Mapper.Configuration.AssertConfigurationIsValid();
}
}
public class TestClass
{
var categoryModel = new CategoryModel();
categoryModel.Category = categoryModel;
var userModel = new UserModel();
var userGroupModel = new UserGroupModel();
userModel.Category = categoryModel;
userModel.Group = userGroupModel;
userGroupModel.Users.Add(userModel);
var userDto = Mapper.Map<UserDto>(userModel);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment