当前位置: 代码网 > it编程>编程语言>Asp.net > C#使用AutoMapper进行对象映射的示例代码

C#使用AutoMapper进行对象映射的示例代码

2024年08月15日 Asp.net 我要评论
引言automapper 是一个对象到对象映射的库,可以简化 dto (data transfer objects) 和实体类之间的转换。在大型应用程序中,通常需要将业务实体映射到视图模型或 dto

引言

automapper 是一个对象到对象映射的库,可以简化 dto (data transfer objects) 和实体类之间的转换。在大型应用程序中,通常需要将业务实体映射到视图模型或 dto 中,这样可以减少代码的重复性并提高可维护性。本文将详细介绍如何在 c# 项目中使用 automapper,包括安装、配置、以及示例代码。

一、安装 automapper

首先,需要在项目中安装 automapper,可以使用 nuget package manager 进行安装。

在 visual studio 中打开 nuget 包管理控制台,然后运行以下命令:

install-package automapper

或者通过 nuget 管理器搜索 automapper 并进行安装。

二、配置 automapper

安装完成后,需要配置 automapper。通常在应用程序启动时配置,可以在 asp.net core 的 startup 类中配置,或在普通的控制台应用程序的入口处配置。

定义模型和 dto

让我们首先定义一个简单的模型类和对应的 dto 类。

public class user
{
    public int id { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
    public datetime dateofbirth { get; set; }
}

public class userdto
{
    public int id { get; set; }
    public string fullname { get; set; }
    public int age { get; set; }
}

创建映射配置

接下来,我们需要配置对象之间的映射关系。在 asp.net core 项目中,可以在 startup.cs 文件中进行配置。在控制台应用程序中,可以在 main 方法中进行配置。

using automapper;
using system;

public class automapperprofile : profile
{
    public automapperprofile()
    {
        // 配置映射关系
        createmap<user, userdto>()
            .formember(dest => dest.fullname, opt => opt.mapfrom(src => $"{src.firstname} {src.lastname}"))
            .formember(dest => dest.age, opt => opt.mapfrom(src => datetime.now.year - src.dateofbirth.year));
    }
}

在上面的代码中,我们定义了一个 automapperprofile 类,它继承自 profile,并在构造函数中配置了 user 和 userdto 之间的映射关系。

初始化 automapper

然后,我们需要在应用程序启动时初始化 automapper。

在 asp.net core 中,可以在 startup.cs 中配置:

public class startup
{
    public void configureservices(iservicecollection services)
    {
        services.addautomapper(typeof(startup));
    }
}

在控制台应用程序中,可以在 main 方法中初始化:

class program
{
    static void main(string[] args)
    {
        var config = new mapperconfiguration(cfg =>
        {
            cfg.addprofile<automapperprofile>();
        });

        imapper mapper = config.createmapper();

        // 测试映射
        var user = new user
        {
            id = 1,
            firstname = "john",
            lastname = "doe",
            dateofbirth = new datetime(1990, 1, 1)
        };

        var userdto = mapper.map<userdto>(user);

        console.writeline($"id: {userdto.id}, fullname: {userdto.fullname}, age: {userdto.age}");
    }
}

在上面的代码中,我们创建了 mapperconfiguration 并添加了我们刚才创建的 automapperprofile。然后,通过 createmapper 方法创建一个 imapper 实例,并使用它来执行映射操作。

三、使用 automapper

有了上述配置后,就可以使用 automapper 进行对象映射了。以下是一个简单的示例:

var user = new user
{
    id = 1,
    firstname = "john",
    lastname = "doe",
    dateofbirth = new datetime(1990, 1, 1)
};

var userdto = mapper.map<userdto>(user);

console.writeline($"id: {userdto.id}, fullname: {userdto.fullname}, age: {userdto.age}");

运行该代码后,将输出:

id: 1, fullname: john doe, age: 34

automapper 自动将 user 对象映射到 userdto 对象,并且根据配置生成了 fullname 和 age 的值。

四、总结

通过以上示例,您已经学习了如何在 c# 中使用 automapper 进行对象映射。automapper 是一个非常强大的工具,它可以减少手动编写映射代码的工作量,特别是在复杂项目中更是如此。希望本文对您有所帮助!

完整代码示例:

using automapper;
using system;

public class user
{
    public int id { get; set; }
    public string firstname { get; set; }
    public string lastname { get; set; }
    public datetime dateofbirth { get; set; }
}

public class userdto
{
    public int id { get; set; }
    public string fullname { get; set; }
    public int age { get; set; }
}

public class automapperprofile : profile
{
    public automapperprofile()
    {
        createmap<user, userdto>()
            .formember(dest => dest.fullname, opt => opt.mapfrom(src => $"{src.firstname} {src.lastname}"))
            .formember(dest => dest.age, opt => opt.mapfrom(src => datetime.now.year - src.dateofbirth.year));
    }
}

class program
{
    static void main(string[] args)
    {
        var config = new mapperconfiguration(cfg =>
        {
            cfg.addprofile<automapperprofile>();
        });

        imapper mapper = config.createmapper();

        var user = new user
        {
            id = 1,
            firstname = "john",
            lastname = "doe",
            dateofbirth = new datetime(1990, 1, 1)
        };

        var userdto = mapper.map<userdto>(user);

        console.writeline($"id: {userdto.id}, fullname: {userdto.fullname}, age: {userdto.age}");
    }
}

这段代码可以直接复制到您的项目中并运行,帮助您快速掌握 automapper 的使用。

以上就是c#使用automapper进行对象映射的示例代码的详细内容,更多关于c# automapper对象映射的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com