//netstandard2.0 +
[ AutoDto ( Type entityType , params string [ ] ignoredProperties ) ]
//C#11(NET7+) support generic attribute
[ AutoDto < T > ( params string [ ] ignoredProperties ) ]
namespace Biwen . AutoClassGen . TestConsole . Entitys
{
public class User : Info
{
/// <summary>
/// Id
/// </summary>
public string Id { get ; set ; } = null ! ;
/// <summary>
/// first name
/// </summary>
public string FirstName { get ; set ; } = null ! ;
/// <summary>
/// last name
/// </summary>
public string LastName { get ; set ; } = null ! ;
/// <summary>
/// age
/// </summary>
public int ? Age { get ; set ; }
/// <summary>
/// fullname
/// </summary>
public string ? FullName => $ "{ FirstName } { LastName } ";
}
public abstract class Info : Other
{
/// <summary>
/// email
/// </summary>
public string ? Email { get ; set ; }
}
public abstract class Other
{
/// <summary>
/// remark
/// </summary>
public string ? Remark { get ; set ; }
}
}
Define Dto Partial Class & mark AutoDtoAttribute
using Biwen . AutoClassGen . TestConsole . Entitys ;
namespace Biwen . AutoClassGen . TestConsole . Dtos
{
[ AutoDto ( typeof ( User ) , nameof ( User . Id ) , "TestCol" ) ]
public partial class UserDto
{
}
/// <summary>
/// C#11(NET7+) support generic attribute
/// </summary>
[ AutoDto < User > ( nameof ( User . Email ) , "TestCol" ) ]
public partial class User3Dto
{
}
}
请注意MapperTo扩展函数仅针对属性相同的情况,如果需要映射不同的属性名或特殊映射规则,请使用AutoMapper
或者Maspter
等第三方库
// <auto-generated />
using System ;
using System . Collections . Generic ;
using System . Text ;
using System . Threading . Tasks ;
using Biwen . AutoClassGen . TestConsole . Entitys ;
#pragma warning disable
namespace Biwen . AutoClassGen . TestConsole . Dtos
{
public partial class UserDto
{
/// <inheritdoc cref = "User.FirstName"/>
public string FirstName { get ; set ; }
/// <inheritdoc cref = "User.LastName"/>
public string LastName { get ; set ; }
/// <inheritdoc cref = "User.Age"/>
public int ? Age { get ; set ; }
/// <inheritdoc cref = "User.FullName"/>
public string ? FullName { get ; set ; }
/// <inheritdoc cref = "Info.Email"/>
public string ? Email { get ; set ; }
/// <inheritdoc cref = "Other.Remark"/>
public string ? Remark { get ; set ; }
}
}
namespace Biwen . AutoClassGen . TestConsole . Entitys
{
using Biwen . AutoClassGen . TestConsole . Dtos ;
public static partial class UserToUserDtoExtentions
{
/// <summary>
/// mapper to UserDto
/// </summary>
/// <returns></returns>
public static UserDto MapperToDto ( this User model )
{
return new UserDto ( )
{
FirstName = model . FirstName ,
LastName = model . LastName ,
Age = model . Age ,
FullName = model . FullName ,
Email = model . Email ,
Remark = model . Remark ,
} ;
}
}
}
#pragma warning restore
GEN041: Repeat Mark [AutoDto] mutil times