成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在.NET中使用AutoMapper進(jìn)行對(duì)象映射,對(duì)象相互轉(zhuǎn),簡(jiǎn)單方便

開發(fā) 開發(fā)工具
在.NET中,我們可以使用AutoMapper庫來簡(jiǎn)化數(shù)據(jù)對(duì)象之間的映射操作,從而提高代碼的可讀性和可維護(hù)性。

AutoMapper是一種對(duì)象映射工具,它可以幫助我們將不同類型的數(shù)據(jù)對(duì)象之間進(jìn)行相互轉(zhuǎn)換。在.NET中,我們可以使用AutoMapper庫來簡(jiǎn)化數(shù)據(jù)對(duì)象之間的映射操作,從而提高代碼的可讀性和可維護(hù)性。

一、AutoMapper的安裝和基本使用

1、安裝AutoMapper

首先,我們需要在項(xiàng)目中安裝AutoMapper庫。通過NuGet包管理器,我們可以方便地安裝AutoMapper。在Visual Studio中,右鍵點(diǎn)擊項(xiàng)目->管理NuGet程序包->瀏覽->搜索AutoMapper->安裝即可。

2、定義數(shù)據(jù)模型

假設(shè)我們有兩個(gè)類,一個(gè)是Source類,另一個(gè)是Destination類。我們希望將Source類的實(shí)例映射到Destination類。

public class Source
{
    public int SomeValue { get; set; }
    public string SomeString { get; set; }
}

public class Destination
{
    public int SomeValue { get; set; }
    public string SomeString { get; set; }
}

3、配置AutoMapper映射

我們?cè)趹?yīng)用程序的配置文件(例如appsettings.json)中定義AutoMapper的映射配置。在這種情況下,我們定義了Source類和Destination類之間的映射關(guān)系。

{
    "AutoMapper": {
        "Maps": {
            "SourceToDestination": {
                "SomeValue": "SomeValue",
                "SomeString": "SomeString"
            }
        }
    }
}

4、使用AutoMapper進(jìn)行映射

現(xiàn)在我們可以在代碼中使用AutoMapper來將Source對(duì)象映射到Destination對(duì)象。

IMapper mapper = ConfigurationManager.GetService<IMapper>();
Source source = new Source { SomeValue = 5, SomeString = "Hello" };
Destination destination = mapper.Map<Destination>(source);

二、AutoMapper的高級(jí)應(yīng)用

1、嵌套對(duì)象的映射

如果我們的Source類和Destination類具有嵌套的對(duì)象,我們可以使用AutoMapper來處理這些嵌套對(duì)象的映射。假設(shè)Source類有一個(gè)嵌套的Person類,而Destination類有一個(gè)嵌套的PersonDTO類,我們可以這樣定義映射:

{
    "AutoMapper": {
        "Maps": {
            "SourceToDestination": {
                "SomeValue": "SomeValue",
                "SomeString": "SomeString",
                "Person.Name": "PersonDTO.Name",
                "Person.Age": "PersonDTO.Age"
            }
        }
    }
}

2、使用MapFrom和Condition進(jìn)行自定義映射規(guī)則

有時(shí)候我們可能需要在映射過程中應(yīng)用一些自定義的映射規(guī)則。AutoMapper提供了MapFrom和Condition關(guān)鍵字,可以讓我們?cè)谟成溥^程中應(yīng)用自定義的規(guī)則。例如,假設(shè)我們?cè)谟成銼ource類到Destination類時(shí),希望將Source類的SomeString屬性轉(zhuǎn)換為大寫,我們可以這樣定義映射規(guī)則:

{
    "AutoMapper": {
        "Maps": {
            "SourceToDestination": {
                "SomeValue": "SomeValue",
                "SomeString": { 
                    "MapFrom": "ConvertToUpper", 
                    "Condition": "it.SomeString != null" 
                }
            }
        }
    },
    "AutoMapperExternals": {
        "Converts": [ { "Type": "System.String", "ConvertUsing": "ConvertToUpper" } ]
    }
}

其中,在代碼中我們需要定義一個(gè)ConvertToUpper方法來將字符串轉(zhuǎn)換為大寫。

public class StringConverter : ITypeConverter<string, string>
{
    public string Convert(ResolutionContext context) => context.SourceValue.ToUpper();
}

3、映射繼承屬性

如果你有一個(gè)基類或接口,并且你想將該基類或接口的派生類映射到另一個(gè)對(duì)象,那么你可以使用AutoMapper的繼承映射功能。你只需要在映射配置中指定基類和派生類之間的映射關(guān)系。

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class Employee : Person
{
    public string Department { get; set; }
}

// 在映射配置中指定繼承映射關(guān)系
cfg.CreateMap<Person, Employee>();

4、使用IgnoreMember和IncludeMember

有時(shí)候你可能會(huì)遇到一些不需要映射的屬性,或者只希望映射對(duì)象的一部分屬性。這時(shí),你可以使用IgnoreMember和IncludeMember來控制映射過程。

// 忽略Source對(duì)象的某些屬性
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.IgnoredProperty, opt => opt.Ignore());

// 只映射Source對(duì)象的某些屬性
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.IncludedProperty, opt => opt.Include("SomeProperty"));

5、使用MapFrom和Condition

MapFrom和Condition可以讓你在映射過程中執(zhí)行更復(fù)雜的邏輯。比如,你可以使用MapFrom指定一個(gè)方法來確定目標(biāo)屬性的值,或者使用Condition來控制映射的條件。

// 使用MapFrom指定一個(gè)方法來確定目標(biāo)屬性的值
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.ComputedProperty, opt => opt.MapFrom(src => CalculateValue(src)));

// 使用Condition來控制映射的條件
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.ConditionalProperty, opt => opt.Condition(src => src.SomeProperty != null));

6、自定義分辨率器

有時(shí)候你可能會(huì)需要在映射過程中使用自定義的分辨率器。你可以實(shí)現(xiàn)AutoMapper的IValueResolver接口,并實(shí)現(xiàn)自己的分辨率邏輯。

public class CustomResolver : IValueResolver<Source, Destination, string>
{
    public string Resolve(Source source, Destination destination, string member, IMappingExpression mapping)
    {
        // 實(shí)現(xiàn)自己的分辨率邏輯
        return ResolveValue(source);
    }
}

// 在映射配置中使用自定義分辨率器
cfg.CreateMap<Source, Destination>().ForMember(dest => dest.Property, opt => opt.ResolveUsing<CustomResolver>());

這些是AutoMapper的一些高級(jí)應(yīng)用,可以幫助你更靈活地處理對(duì)象映射的各種情況。通過合理的配置和擴(kuò)展AutoMapper,可以簡(jiǎn)化代碼并提高開發(fā)效率。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2024-05-17 08:59:02

.NET對(duì)象映射庫

2021-02-22 06:41:35

對(duì)象AutoMapper映射

2021-05-31 06:28:35

AutoMapper對(duì)象映射器

2023-07-07 07:43:37

AutoMapper映射庫

2010-09-01 08:57:27

jQueryDOM對(duì)象

2011-03-11 09:20:35

jQueryjavascript

2011-09-19 11:39:31

Android手機(jī)Touchqode

2009-10-30 11:20:54

VB.NET Proc

2024-08-02 08:43:24

JavaScript開發(fā)者工具箱深拷貝

2009-12-18 14:27:24

ADO.NET對(duì)象

2013-10-24 14:24:17

搜狗輸入法

2021-01-12 07:34:13

NetCore 映射器對(duì)象

2023-12-22 10:40:16

Mapster.NET開源

2024-02-26 08:15:00

數(shù)據(jù)映代碼開發(fā)

2009-12-30 14:59:42

ADO.NET數(shù)據(jù)集

2024-12-11 08:41:18

2010-04-14 10:12:07

Oracle數(shù)據(jù)庫

2022-12-29 07:33:44

Strace故障排除

2009-07-20 16:45:41

使用StringBuiASP.NET

2009-07-20 13:47:08

iBATIS.NET字
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 一级视频在线免费观看 | 精品久久av | 999精品网| 国产综合久久 | 日本亚洲精品成人欧美一区 | 丝袜美腿一区二区三区 | 日日躁狠狠躁aaaaxxxx | 亚洲视频中文字幕 | 色婷婷精品久久二区二区蜜臂av | 一区二区三区中文字幕 | 精品少妇一区二区三区在线播放 | 超碰av在线 | 国产日韩欧美二区 | 成人a视频片观看免费 | 亚洲欧美精品 | 成人h电影在线观看 | 视频在线观看一区二区 | 懂色av蜜桃av | 日韩在线不卡 | h免费观看| 91在线观看 | 国产一区高清 | 99精品视频免费观看 | 欧美一级免费 | 成人免费小视频 | 国产成人精品久久二区二区91 | 欧美日韩一区二区三区四区五区 | 久久一级| 中文字幕在线三区 | 亚洲国产中文字幕 | 成人蜜桃av | 女女百合av大片一区二区三区九县 | 欧美激情久久久 | 一级特黄色毛片 | 日本高清视频网站 | 欧美一区二区 | 亚洲成av人片在线观看无码 | 国产成人精品久久二区二区91 | 国产1区 | 国产欧美精品一区二区三区 | 日本精品一区二区 |