SourceCrafter.Bindings
1.24.145.16
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package SourceCrafter.Bindings --version 1.24.145.16
NuGet\Install-Package SourceCrafter.Bindings -Version 1.24.145.16
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.Bindings" Version="1.24.145.16" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SourceCrafter.Bindings --version 1.24.145.16
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SourceCrafter.Bindings, 1.24.145.16"
#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.Bindings as a Cake Addin #addin nuget:?package=SourceCrafter.Bindings&version=1.24.145.16 // Install SourceCrafter.Bindings as a Cake Tool #tool nuget:?package=SourceCrafter.Bindings&version=1.24.145.16
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
✨ Mapper.Generator: Source generator for conversion operators and static methods
⚙️ 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)
- 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.310.349 | 70 | 11/5/2024 |
1.24.305.73 | 81 | 10/31/2024 |
1.24.305.70 | 75 | 10/31/2024 |
1.24.305.69 | 75 | 10/31/2024 |
1.24.305.67 | 67 | 10/31/2024 |
1.24.304.465 | 70 | 10/30/2024 |
1.24.304.362 | 69 | 10/30/2024 |
1.24.304.205 | 79 | 10/30/2024 |
1.24.303.30 | 74 | 10/29/2024 |
1.24.303.20 | 66 | 10/29/2024 |
1.24.301.422 | 76 | 10/27/2024 |
1.24.301.420 | 75 | 10/27/2024 |
1.24.301.400 | 74 | 10/27/2024 |
1.24.301.385 | 73 | 10/27/2024 |
1.24.301.383 | 76 | 10/27/2024 |
1.24.301.341 | 84 | 10/27/2024 |
1.24.301.340 | 68 | 10/27/2024 |
1.24.301.331 | 68 | 10/27/2024 |
1.24.301.324 | 72 | 10/27/2024 |
1.24.301.323 | 72 | 10/27/2024 |
1.24.301.310 | 83 | 10/27/2024 |
1.24.301.308 | 75 | 10/27/2024 |
1.24.301.306 | 78 | 10/27/2024 |
1.24.301.92 | 80 | 10/27/2024 |
1.24.299.54 | 78 | 10/25/2024 |
1.24.298.55 | 80 | 10/24/2024 |
1.24.298.2 | 85 | 10/24/2024 |
1.24.200.88 | 96 | 7/18/2024 |
1.24.158.55 | 105 | 6/6/2024 |
1.24.158.53 | 100 | 6/6/2024 |
1.24.158.48 | 102 | 6/6/2024 |
1.24.145.16 | 116 | 5/24/2024 |
1.24.143.87 | 117 | 5/22/2024 |
1.24.140.54 | 105 | 5/19/2024 |
1.24.82.88 | 138 | 3/22/2024 |
1.24.72.77 | 135 | 3/12/2024 |
1.24.72.56 | 124 | 3/12/2024 |
1.24.70.72 | 143 | 3/10/2024 |
1.24.70.59 | 143 | 3/10/2024 |
1.24.69.90 | 136 | 3/9/2024 |
1.24.69.77 | 127 | 3/9/2024 |
1.24.69.62 | 132 | 3/9/2024 |
fix interface - mapping struct