如何在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);

现在,"信息"应该用来自"模型"的值填充

感谢您的帮助。

如何在C#中使用从结构中获取的值对对象进行水合

是。AutoMapper。它是专门为此而设计的。我个人更喜欢编写ViewModel构造函数,它接受一个实体并复制属性。我喜欢优秀的老C#代码的控制力和熟悉度,即使它需要付出更多的努力。

自动映射程序应该做到这一点。您可以将其用作nuget包。

一旦有了类型和对AutoMapper的引用,就可以为这两种类型创建贴图。

Mapper.CreateMap<UserUpdateModel, UserInfo>();

左边的类型是源类型,右边的类型是目标类型。要执行映射,请使用Map方法。

UserInfo info = Mapper.Map<UserInfo>(userUpdateModel);