我正在使用AutoMapper将我的服务器模型对映射到UI模型。我正在开发一种真正陷入以下情况的dotnet核心解决方案
服务器型号:
public interface IUserValue : IValue
{
string EmailId { get; set; }
}
public class UserValue : IUserValue
{
public string EmailId { get; set; }
}
public interface IUserProperty : IProperty
{
string Name { get; set; }
}
public class UserProperty : IUserProperty
{
public string Name { get; set; }
}
public interface IUser
{
IUserValue Value { get; set; }
IUserProperty Property { get; set; }
}
public class User
{
public IUserValue Value { get; set; }
public IUserProperty Property { get; set; }
}
UI类似于
public class UserUIModel
{
public string Email { get; set; }
public string Name { get; set; }
}
我已经使用以下代码成功地从服务器对象映射了UI对象
CreateMap<User, UserUIModel>()
.ForMember(dest =>
dest.Email, opts =>
opts.MapFrom(src =>
src.Value.EmailId))
.ForMember(dest =>
dest.Name, opts =>
opts.MapFrom(src =>
src.Property.Name));
有人可以建议我如何实现从UserUIModel到User对象的反向映射吗?
答案 0 :(得分:0)
在CreateMap逻辑的末尾使用ReverseMap()
函数,如下所示:
CreateMap<User, UserUIModel>()
.ForMember(dest =>
dest.Email, opts =>
opts.MapFrom(src =>
src.Value.EmailId))
.ForMember(dest =>
dest.Name, opts =>
opts.MapFrom(src =>
src.Property.Name))
.ReverseMap();
答案 1 :(得分:0)
如果有人仍在寻找如何解决此问题,我已经弄清楚了。
AutoMapper不会创建接口类型的对象,在我的情况下,如果我们可以看到 User 类,则有属性,但是所有类型都是某种Interfaces。因此,我不得不对这些接口类型引用进行一些手动或默认操作。那是>
public class User
{
public IUserValue Value { get; set; } = new UserValue();
public IUserProperty Property { get; set; } = new UserProperty();
}
对我来说很好。