RSCG – Najlot.Map.SourceGenerator

RSCG – Najlot.Map.SourceGenerator
 
 

name Najlot.Map.SourceGenerator
nuget https://www.nuget.org/packages/Najlot.Map.SourceGenerator/
link https://github.com/najlot/Map
author Najlot

Generates object mapping code at compile time using source generators

 

This is how you can use Najlot.Map.SourceGenerator .

The code that you start with is


<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

	<PropertyGroup>
		<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
		<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
	</PropertyGroup>

	<ItemGroup>
	  <PackageReference Include="Najlot.Map" Version="0.2.1" />
	  <PackageReference Include="Najlot.Map.SourceGenerator" Version="0.2.1" />
	</ItemGroup>

	

	
	
	
</Project>


The code that you will use is


using mapperDemo;
using Najlot.Map;
var map = new Map();
map.RegistermapperDemoMappings();
map.Validate();
var p=new Person();
p.FirstName = "Andrei";
p.LastName = "Ignat";
PersonDTO personDTO=map.From(p).To<PersonDTO>();
Console.WriteLine(personDTO.FullName);




public partial class Person
{
    public int ID { get; set; }
    public string? FirstName { get; set; }
    public string? LastName { get; set; }
}




using Najlot.Map;
using Najlot.Map.Attributes;
namespace mapperDemo;
public partial struct PersonDTO
{
    public string? FirstName { get; set; }
    public string? LastName { get; set; }

    public string FullName { 
        get
        {
            return FirstName + " " + LastName;
        }
    }
}


[Mapping]
public partial class UserMapper
{
    [MapIgnoreProperty(nameof(Person.ID))]
    public partial PersonDTO MapUser(Person from);
}

 

The code that is generated is

// <auto-generated/>
#nullable enable

namespace mapperDemo
{
    partial class UserMapper
    {
        public partial mapperDemo.PersonDTO MapUser(Person from)
        {
            var result = new mapperDemo.PersonDTO();

            result.FirstName = from.FirstName;
            result.LastName = from.LastName;

            return result;
        }

    }
}

// <auto-generated/>
#nullable enable
using Najlot.Map;

namespace mapperDemo
{
    public static class MapRegistrationExtensions_mapperDemo
    {
        public static IMap RegistermapperDemoMappings(this IMap map)
        {
            var instance_mapperDemo_UserMapper = map.Create<global::mapperDemo.UserMapper>();
            map.Register<global::Person, global::mapperDemo.PersonDTO>(instance_mapperDemo_UserMapper.MapUser);
            return map;
        }
    }
}

Code and pdf at

https://ignatandrei.github.io/RSCG_Examples/v2/docs/Najlot.Map.SourceGenerator


Posted

in

,

by

Tags: