SourceCrafter.Mapifier
1.24.311.301
dotnet add package SourceCrafter.Mapifier --version 1.24.311.301
NuGet\Install-Package SourceCrafter.Mapifier -Version 1.24.311.301
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SourceCrafter.Mapifier" Version="1.24.311.301" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SourceCrafter.Mapifier --version 1.24.311.301
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SourceCrafter.Mapifier, 1.24.311.301"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install SourceCrafter.Mapifier as a Cake Addin #addin nuget:?package=SourceCrafter.Mapifier&version=1.24.311.301 // Install SourceCrafter.Mapifier as a Cake Tool #tool nuget:?package=SourceCrafter.Mapifier&version=1.24.311.301
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
✨ SourceCrafter.Mapifier: compile-time mapper
⚙️ Supports
- Assembly global mappings
- Map inherited members
- Custom static mapper methods
- Property level mapping
- Ignore mapping behaviors (Levels: assembly, class, property)
- Easy to use variants
- Extension method (Generated through assembly attributes)
var typeA = typeB.ToTypeA();
- Extension method (Generated through assembly attributes)
🏛️ Scenarios
Assembly level
Recommended for unmodifiable or external classes
Attribute specification ([assembly: Map<TTarget, TSource>]
)
[assembly: Map<WindowsUser,WindowsIdentity>(nameof(GlobalMappers.MapToWindowsIdentity))]
Generated content (class <namespace>.GlobalMappers
)
namespace Test;
public static partial class GlobalMappers {
public static Test.WindowsUser ToWindowsUser(this System.Security.Principal.WindowsIdentity from)
{
return new Test.WindowsUser {
Name = from.Name,
IsAuthenticated = from.IsAuthenticated
};
}
public static System.Security.Principal.WindowsIdentity ToWindowsIdentity(this Test.WindowsUser from)
{
return Test.GlobalMappers.MapToWindowsIdentity(from);
}
}
Having a project file for a GlobalMappers
partial class
public static partial class GlobalMappers
{
public static WindowsIdentity MapToWindowsIdentity(this WindowsUser from)
{
return new(from.Name);
}
}
Class level
public partial class Role
{
public int Id { get; set; }
public string Name { get; set; } = null!;
public static explicit operator Role((int id, string name) role) => new() { Id = role.id, Name = role.name };
public static explicit operator (int id, string name)(Role role) => (role.Id, role.Name);
}
public partial class User
{
public int Count { get; set; }
}
public partial class UserBase
{
internal string FullName
{
get => $"{LastName?.Trim()}, {FirstName?.Trim()}";
set => (FirstName, LastName) = value?.Split(", ") switch
{
[{ } lastName, { } firstName] => (firstName.Trim(), lastName.Trim()),
[{ } firstName] => (firstName, null!),
_ => (null!, null!)
};
}
public string FirstName { get; set; } = null!;
public string? LastName { get; set; }
public int Age { get; set; }
}
[Map<UserDto>]
public partial class User : UserBase
{
[Ignore(Ignore.OnSource)]
public string? Unwanted { get; set; }
public DateTime DateOfBirth { get; set; }
[Map(nameof(UserDto.TotalAmount), Ignore.OnTarget)]
public double Balance { get; set; }
public List<Role> Roles { get; set; } = new();
public Role? MainRole { get; set; }
}
public partial class UserDto
{
public string FullName { get; set; } = null!;
public int Count { get; set; }
public int Age { get; set; }
public string? Unwanted { get; set; }
public DateTime DateOfBirth { get; set; }
public (int, string)[] Roles { get; set; } = Array.Empty<(int, string)>();
public (int, string) MainRole { get; set; } = default;
public decimal TotalAmount { get; set; }
}
[Map<WindowsIdentity>(nameof(GlobalMappers.MapToWindowsIdentity))]
public partial class WindowsUser
{
public string Name { get; set; } = null!;
public bool IsAuthenticated { get; set; }
}
[Map<UserDto>] public partial class User
produces:
namespace Test;
public static partial class MapperExtensions
{
public static Test.User ToUser(Test.UserDto from)
{
return new Test.User {
FullName = from.FullName,
Age = from.Age,
Count = from.Count,
Unwanted = from.Unwanted,
DateOfBirth = from.DateOfBirth,
Roles = ToListOfRole(from.Roles),
MainRole = ToRole(from.MainRole)
};
}
public static Test.User ToUserDto(Test.User from)
{
return new Test.UserDto {
FullName = from.FullName,
Age = from.Age,
Count = from.Count,
DateOfBirth = from.DateOfBirth,
TotalAmount = (decimal)from.Balance,
Roles = ToArrayOfTupleOfStringString(from.Roles),
MainRole = ToTupleOfStringString(from.MainRole)
};
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 4.7.0)
- SourceCrafter.DependencyInjection.Interop (>= 0.24.294.5)
- System.Diagnostics.Tools (>= 4.3.0)
- System.Runtime.InteropServices (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.24.311.301 | 67 | 11/6/2024 |