如何在C#中使用从结构中获取的值对对象进行水合
本文关键字:对象 结构 获取 | 更新日期: 2023-09-27 18:29:23
C#中是否有任何水合技术允许将值从一个结构/对象转移到另一个结构或对象,如果它们具有相似的字段或基于特定的策略。我来自Zend Framework 2世界,它提供了"Hydrator"功能,可以完全按照我上面说的做。所以,我想知道Asp.Net或C#是否提供了类似的东西。
为了清楚起见,我想要这样的东西:
struct UserInfo {
public string FirstName { get; set; };
public string LastName { get; set; };
public int Age { get; set; };
}
class UserUpdateModel {
public string FirstName { get; set; };
public string LastName { get; set; };
public int Age { get; set; };
}
//supposed UserUpdateModel model I is gotten from the action param
UserInfo info = new UserInfo();
Hydrator hydrator = new Hydrator(Hydrator.Properties);
hydrator.hydrate(info, model);
现在,"信息"应该用来自"模型"的值填充
感谢您的帮助。
是。AutoMapper。它是专门为此而设计的。我个人更喜欢编写ViewModel构造函数,它接受一个实体并复制属性。我喜欢优秀的老C#代码的控制力和熟悉度,即使它需要付出更多的努力。
自动映射程序应该做到这一点。您可以将其用作nuget包。
一旦有了类型和对AutoMapper的引用,就可以为这两种类型创建贴图。
Mapper.CreateMap<UserUpdateModel, UserInfo>();
左边的类型是源类型,右边的类型是目标类型。要执行映射,请使用Map方法。
UserInfo info = Mapper.Map<UserInfo>(userUpdateModel);