-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or request
Description
nuget add:
dotnet add package Biwen.AutoClassGen.Attributes
Entitys define:
public class Person
{
[Required]
public string Name { get; set; } = string.Empty;
[Required, Range(0, 200)]
public int Age { get; set; }
//模拟嵌套
public Address Address { get; set; } = new Address();
//模拟集合
public List<Hobby> Hobbies { get; set; } = [];
/// <summary>
/// 这是一个忽略的字段
/// </summary>
public string Igrone { get; set; } = string.Empty;
[AutoDtoIgroned]
public string Igrone2 { get; set; } = null!;
}
public class Address
{
[Required]
public string Street { get; set; } = string.Empty;
[Required]
public string City { get; set; } = string.Empty;
[Required]
public string State { get; set; } = string.Empty;
[Required]
public string ZipCode { get; set; } = string.Empty;
}
public class Hobby
{
[Required]
public string Name { get; set; } = string.Empty;
[Required]
public string Description { get; set; } = string.Empty;
public HobbyExtend Extend { get; set; } = new HobbyExtend();
}
public class HobbyExtend
{
public string Extend1 { get; set; } = string.Empty;
public string Extend2 { get; set; } = string.Empty;
public InnerExtend Extend3 { get; set; } = new InnerExtend();
}
public class InnerExtend
{
public string InnerExtendMsg { get; set; } = string.Empty;
}
usage :
/// <summary>
/// 模拟的复杂DTO
/// </summary>
[AutoDto<Person>(nameof(Person.Igrone))]
[AutoDtoComplex(3)]
public partial record PersonComplexDto;
/// <summary>
/// 没有复杂属性嵌套的DTO
/// </summary>
[AutoDto<Person>(nameof(Person.Igrone))]
public partial record PersonDto;
generated :
// <auto-generated />
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
#pragma warning disable
//generate Person-PersonComplexDto
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial record class PersonComplexDto
{
/// <inheritdoc cref = "Person.Name"/>
[Required]
public string Name { get; set; }
/// <inheritdoc cref = "Person.Age"/>
[Required]
[Range(0, 200)]
public int Age { get; set; }
/// <inheritdoc cref = "Person.Address"/>
public AddressDto Address { get; set; }
/// <inheritdoc cref = "Person.Hobbies"/>
public System.Collections.Generic.List<HobbyDto> Hobbies { get; set; }
}
}
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.Linq;
public static partial class PersonToPersonComplexDtoExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(Person from, PersonComplexDto to);
/// <summary>
/// mapper to PersonComplexDto
/// </summary>
/// <returns></returns>
public static PersonComplexDto MapperToPersonComplexDto(this Person model)
{
if (model == null)
return null;
var retn = new PersonComplexDto()
{
Name = model.Name,
Age = model.Age,
Address = model.Address?.MapperToAddressDto(),
Hobbies = model.Hobbies != null ? model.Hobbies.Select(x => x?.MapperToHobbyDto()).ToList() : null,
};
MapperToPartial(model, retn);
return retn;
}
/// <summary>
/// ProjectTo PersonComplexDto
/// </summary>
public static IQueryable<PersonComplexDto> ProjectToPersonComplexDto(this IQueryable<Person> query)
{
return query.Select(model => model.MapperToPersonComplexDto());
}
}
public static partial class PersonComplexDtoToPersonExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(PersonComplexDto from, Person to);
/// <summary>
/// mapper to Person
/// </summary>
/// <returns></returns>
public static Person MapperToPerson(this PersonComplexDto model)
{
if (model == null)
return null;
var retn = new Person()
{
Name = model.Name,
Age = model.Age,
Address = model.Address?.MapperToAddress(),
Hobbies = model.Hobbies != null ? model.Hobbies.Select(x => x?.MapperToHobby()).ToList() : null,
};
MapperToPartial(model, retn);
return retn;
}
}
}
//generate Person-PersonDto
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial record class PersonDto
{
/// <inheritdoc cref = "Person.Name"/>
[Required]
public string Name { get; set; }
/// <inheritdoc cref = "Person.Age"/>
[Required]
[Range(0, 200)]
public int Age { get; set; }
/// <inheritdoc cref = "Person.Address"/>
public Biwen.AutoClassGen.TestConsole.Dtos.Address Address { get; set; }
/// <inheritdoc cref = "Person.Hobbies"/>
public System.Collections.Generic.List<Biwen.AutoClassGen.TestConsole.Dtos.Hobby> Hobbies { get; set; }
}
}
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.Linq;
public static partial class PersonToPersonDtoExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(Person from, PersonDto to);
/// <summary>
/// mapper to PersonDto
/// </summary>
/// <returns></returns>
public static PersonDto MapperToPersonDto(this Person model)
{
if (model == null)
return null;
var retn = new PersonDto()
{
Name = model.Name,
Age = model.Age,
Address = model.Address,
Hobbies = model.Hobbies,
};
MapperToPartial(model, retn);
return retn;
}
/// <summary>
/// ProjectTo PersonDto
/// </summary>
public static IQueryable<PersonDto> ProjectToPersonDto(this IQueryable<Person> query)
{
return query.Select(model => model.MapperToPersonDto());
}
}
public static partial class PersonDtoToPersonExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(PersonDto from, Person to);
/// <summary>
/// mapper to Person
/// </summary>
/// <returns></returns>
public static Person MapperToPerson(this PersonDto model)
{
if (model == null)
return null;
var retn = new Person()
{
Name = model.Name,
Age = model.Age,
Address = model.Address,
Hobbies = model.Hobbies,
};
MapperToPartial(model, retn);
return retn;
}
}
}
//generate Address-AddressDto
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial class AddressDto
{
/// <inheritdoc cref = "Address.Street"/>
[Required]
public string Street { get; set; }
/// <inheritdoc cref = "Address.City"/>
[Required]
public string City { get; set; }
/// <inheritdoc cref = "Address.State"/>
[Required]
public string State { get; set; }
/// <inheritdoc cref = "Address.ZipCode"/>
[Required]
public string ZipCode { get; set; }
}
}
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.Linq;
using System.Net;
public static partial class AddressToAddressDtoExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(Address from, AddressDto to);
/// <summary>
/// mapper to AddressDto
/// </summary>
/// <returns></returns>
public static AddressDto MapperToAddressDto(this Address model)
{
if (model == null)
return null;
var retn = new AddressDto()
{
Street = model.Street,
City = model.City,
State = model.State,
ZipCode = model.ZipCode,
};
MapperToPartial(model, retn);
return retn;
}
/// <summary>
/// ProjectTo AddressDto
/// </summary>
public static IQueryable<AddressDto> ProjectToAddressDto(this IQueryable<Address> query)
{
return query.Select(model => model.MapperToAddressDto());
}
}
public static partial class AddressDtoToAddressExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(AddressDto from, Address to);
/// <summary>
/// mapper to Address
/// </summary>
/// <returns></returns>
public static Address MapperToAddress(this AddressDto model)
{
if (model == null)
return null;
var retn = new Address()
{
Street = model.Street,
City = model.City,
State = model.State,
ZipCode = model.ZipCode,
};
MapperToPartial(model, retn);
return retn;
}
}
}
//generate Hobby-HobbyDto
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial class HobbyDto
{
/// <inheritdoc cref = "Hobby.Name"/>
[Required]
public string Name { get; set; }
/// <inheritdoc cref = "Hobby.Description"/>
[Required]
public string Description { get; set; }
/// <inheritdoc cref = "Hobby.Extend"/>
public HobbyExtendDto Extend { get; set; }
}
}
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.Linq;
public static partial class HobbyToHobbyDtoExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(Hobby from, HobbyDto to);
/// <summary>
/// mapper to HobbyDto
/// </summary>
/// <returns></returns>
public static HobbyDto MapperToHobbyDto(this Hobby model)
{
if (model == null)
return null;
var retn = new HobbyDto()
{
Name = model.Name,
Description = model.Description,
Extend = model.Extend?.MapperToHobbyExtendDto(),
};
MapperToPartial(model, retn);
return retn;
}
/// <summary>
/// ProjectTo HobbyDto
/// </summary>
public static IQueryable<HobbyDto> ProjectToHobbyDto(this IQueryable<Hobby> query)
{
return query.Select(model => model.MapperToHobbyDto());
}
}
public static partial class HobbyDtoToHobbyExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(HobbyDto from, Hobby to);
/// <summary>
/// mapper to Hobby
/// </summary>
/// <returns></returns>
public static Hobby MapperToHobby(this HobbyDto model)
{
if (model == null)
return null;
var retn = new Hobby()
{
Name = model.Name,
Description = model.Description,
Extend = model.Extend?.MapperToHobbyExtend(),
};
MapperToPartial(model, retn);
return retn;
}
}
}
//generate HobbyExtend-HobbyExtendDto
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial class HobbyExtendDto
{
/// <inheritdoc cref = "HobbyExtend.Extend1"/>
public string Extend1 { get; set; }
/// <inheritdoc cref = "HobbyExtend.Extend2"/>
public string Extend2 { get; set; }
/// <inheritdoc cref = "HobbyExtend.Extend3"/>
public InnerExtendDto Extend3 { get; set; }
}
}
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.Linq;
public static partial class HobbyExtendToHobbyExtendDtoExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(HobbyExtend from, HobbyExtendDto to);
/// <summary>
/// mapper to HobbyExtendDto
/// </summary>
/// <returns></returns>
public static HobbyExtendDto MapperToHobbyExtendDto(this HobbyExtend model)
{
if (model == null)
return null;
var retn = new HobbyExtendDto()
{
Extend1 = model.Extend1,
Extend2 = model.Extend2,
Extend3 = model.Extend3?.MapperToInnerExtendDto(),
};
MapperToPartial(model, retn);
return retn;
}
/// <summary>
/// ProjectTo HobbyExtendDto
/// </summary>
public static IQueryable<HobbyExtendDto> ProjectToHobbyExtendDto(this IQueryable<HobbyExtend> query)
{
return query.Select(model => model.MapperToHobbyExtendDto());
}
}
public static partial class HobbyExtendDtoToHobbyExtendExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(HobbyExtendDto from, HobbyExtend to);
/// <summary>
/// mapper to HobbyExtend
/// </summary>
/// <returns></returns>
public static HobbyExtend MapperToHobbyExtend(this HobbyExtendDto model)
{
if (model == null)
return null;
var retn = new HobbyExtend()
{
Extend1 = model.Extend1,
Extend2 = model.Extend2,
Extend3 = model.Extend3?.MapperToInnerExtend(),
};
MapperToPartial(model, retn);
return retn;
}
}
}
//generate InnerExtend-InnerExtendDto
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
public partial class InnerExtendDto
{
/// <inheritdoc cref = "InnerExtend.InnerExtendMsg"/>
public string InnerExtendMsg { get; set; }
}
}
namespace Biwen.AutoClassGen.TestConsole.Dtos
{
using Biwen.AutoClassGen.TestConsole.Dtos;
using System.Linq;
public static partial class InnerExtendToInnerExtendDtoExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(InnerExtend from, InnerExtendDto to);
/// <summary>
/// mapper to InnerExtendDto
/// </summary>
/// <returns></returns>
public static InnerExtendDto MapperToInnerExtendDto(this InnerExtend model)
{
if (model == null)
return null;
var retn = new InnerExtendDto()
{
InnerExtendMsg = model.InnerExtendMsg,
};
MapperToPartial(model, retn);
return retn;
}
/// <summary>
/// ProjectTo InnerExtendDto
/// </summary>
public static IQueryable<InnerExtendDto> ProjectToInnerExtendDto(this IQueryable<InnerExtend> query)
{
return query.Select(model => model.MapperToInnerExtendDto());
}
}
public static partial class InnerExtendDtoToInnerExtendExtentions
{
/// <summary>
/// custom mapper
/// </summary>
static partial void MapperToPartial(InnerExtendDto from, InnerExtend to);
/// <summary>
/// mapper to InnerExtend
/// </summary>
/// <returns></returns>
public static InnerExtend MapperToInnerExtend(this InnerExtendDto model)
{
if (model == null)
return null;
var retn = new InnerExtend()
{
InnerExtendMsg = model.InnerExtendMsg,
};
MapperToPartial(model, retn);
return retn;
}
}
}
#pragma warning restore
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or request