亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#使用AutoMapper實現(xiàn)類映射詳解

 更新時間:2024年01月26日 08:33:34   作者:rjcql  
AutoMapper是一個用于.NET中簡化類之間的映射的擴(kuò)展庫,這篇文章主要介紹了C#如何使用AutoMapper實現(xiàn)類映射,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

寫在前面

AutoMapper是一個用于.NET中簡化類之間的映射的擴(kuò)展庫;可以在執(zhí)行對象映射的過程,省去的繁瑣轉(zhuǎn)換代碼,實現(xiàn)了對DTO的快速裝配,有效的減少了代碼量。

通過NuGet安裝,AutoMapper, 由于本例用到了DI,所以需要順便安裝一下 AutoMapper.Extensions.Microsoft.DependencyInjection

代碼實現(xiàn)

using AutoMapper;
using AutoMapper.Internal;
using Microsoft.Extensions.DependencyInjection; 
 
IServiceCollection services = new ServiceCollection();
services.AddTransient<ISomeService>(sp => new FooService(5));
services.AddAutoMapper(typeof(Source));
var provider = services.BuildServiceProvider();
using (var scope = provider.CreateScope())
{
    var mapper = scope.ServiceProvider.GetRequiredService<IMapper>();
 
    foreach (var typeMap in mapper.ConfigurationProvider.Internal().GetAllTypeMaps())
    {
        Console.WriteLine($"{typeMap.SourceType.Name} -> {typeMap.DestinationType.Name}");
    }
 
    foreach (var service in services)
    {
        Console.WriteLine(service.ServiceType + " - " + service.ImplementationType);
    }
 
    var dest = mapper.Map<Dest2>(new Source2());
    Console.WriteLine(dest!.ResolvedValue);
}
 
Console.ReadKey();
 
public class Source
{
    public int Id { get; set; }
 
    public string Name { get; set; }
}
 
public class Dest
{
    public int ResolvedValue { get; set; }
 
}
 
public class Source2
{
    public string Name { get; set; }
 
    public int ResolvedValue { get; set; }
}
 
public class Dest2
{
    public int ResolvedValue { get; set; }
}
 
/// <summary>
/// 映射表1
/// </summary>
public class Profile1 : Profile
{
    public Profile1()
    {
        CreateMap<Source, Dest>();
    }
}
 
/// <summary>
/// 映射表1
/// </summary>
public class Profile2 : Profile
{
    public Profile2()
    {
        CreateMap<Source2, Dest2>()
            .ForMember(d => d.ResolvedValue, opt => opt.MapFrom<DependencyResolver>());
    }
}
 
public class DependencyResolver : IValueResolver<object, object, int>
{
    private readonly ISomeService _service;
 
    public DependencyResolver(ISomeService service)
    {
        _service = service;
    }
 
    public int Resolve(object source, object destination, int destMember, ResolutionContext context)
    {
        return _service.Modify(destMember);
    }
}
 
public interface ISomeService
{
    int Modify(int value);
}
 
public class FooService : ISomeService
{
    private readonly int _value;
 
    public FooService(int value)
    {
        _value = value;
    }
 
    public int Modify(int value) => value + _value;
}

調(diào)用示例

到此這篇關(guān)于C#使用AutoMapper實現(xiàn)類映射詳解的文章就介紹到這了,更多相關(guān)C# AutoMapper類映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • DevExpress實現(xiàn)為TextEdit設(shè)置水印文字的方法

    DevExpress實現(xiàn)為TextEdit設(shè)置水印文字的方法

    這篇文章主要介紹了DevExpress實現(xiàn)為TextEdit設(shè)置水印文字的方法,對C#程序設(shè)計人員來說是一個很實用的技巧,需要的朋友可以參考下
    2014-08-08
  • C#把文件上傳到服務(wù)器中的指定地址

    C#把文件上傳到服務(wù)器中的指定地址

    這篇文章介紹了C#實現(xiàn)文件上傳到服務(wù)器指定地址的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#實現(xiàn)將漢字轉(zhuǎn)化為2位大寫的16進(jìn)制Unicode的方法

    C#實現(xiàn)將漢字轉(zhuǎn)化為2位大寫的16進(jìn)制Unicode的方法

    這篇文章主要介紹了C#實現(xiàn)將漢字轉(zhuǎn)化為2位大寫的16進(jìn)制Unicode的方法,分析了轉(zhuǎn)換的技巧并以實例形式給出了具體的轉(zhuǎn)換方法,非常具有實用價值,需要的朋友可以參考下
    2014-12-12
  • C#開發(fā)WinForm項目實現(xiàn)HTML編輯器

    C#開發(fā)WinForm項目實現(xiàn)HTML編輯器

    這篇文章介紹了C#開發(fā)WinForm項目實現(xiàn)HTML編輯器的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • c# 操作word寫入特殊字符的實例

    c# 操作word寫入特殊字符的實例

    這篇文章主要介紹了c# 操作word寫入特殊字符的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Unity實現(xiàn)卡片循環(huán)滾動效果的示例詳解

    Unity實現(xiàn)卡片循環(huán)滾動效果的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Unity實現(xiàn)卡片循環(huán)滾動的效果,文中的實現(xiàn)步驟講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2022-12-12
  • C#實現(xiàn)訪問Web API Url提交數(shù)據(jù)并獲取處理結(jié)果

    C#實現(xiàn)訪問Web API Url提交數(shù)據(jù)并獲取處理結(jié)果

    Web API  是 Web 服務(wù)器和 Web 瀏覽器之間的應(yīng)用程序處理接口,我們常見的模式是訪問 Web API Url 地址,并獲取 Json 、XML或其它指定格式的處理結(jié)果, 本文我們介紹了使用C#實現(xiàn)訪問Web API Url提交數(shù)據(jù)并獲取處理結(jié)果,需要的朋友可以參考下
    2024-05-05
  • C#在Entity Framework中實現(xiàn)事務(wù)回滾

    C#在Entity Framework中實現(xiàn)事務(wù)回滾

    這篇文章介紹了C#在Entity Framework中實現(xiàn)事務(wù)回滾的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 詳解c#與js的rsa加密互通

    詳解c#與js的rsa加密互通

    這篇文章主要介紹了詳解c#與js的rsa加密互通,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-03-03
  • C#使用IHttpModule接口修改http輸出的方法

    C#使用IHttpModule接口修改http輸出的方法

    這篇文章主要介紹了C#使用IHttpModule接口修改http輸出的方法,涉及C#操作IHttpModule接口的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下
    2015-05-05

最新評論