SourceCrafter.Bindings
1.24.70.59
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.70.59
NuGet\Install-Package SourceCrafter.Bindings -Version 1.24.70.59
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.70.59" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add SourceCrafter.Bindings --version 1.24.70.59
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SourceCrafter.Bindings, 1.24.70.59"
#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.70.59 // Install SourceCrafter.Bindings as a Cake Tool #tool nuget:?package=SourceCrafter.Bindings&version=1.24.70.59
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();
- Explicit conversion operation
var typeA = (TypeA)typeB;
- 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 partial class User
{
public static explicit operator Test.User(Test.UserDto from)
{
return new Test.User {
FullName = from.FullName,
Age = from.Age,
Count = from.Count,
Unwanted = from.Unwanted,
DateOfBirth = from.DateOfBirth,
Roles = from.Roles.Select(el => (Role)el).ToList(),
MainRole = (Role)from.MainRole
};
}
public static explicit operator Test.UserDto(Test.User from)
{
return new Test.UserDto {
FullName = from.FullName,
Age = from.Age,
Count = from.Count,
DateOfBirth = from.DateOfBirth,
TotalAmount = (decimal)from.Balance,
Roles = from.Roles.Select(el => ((int, string))el).ToArray(),
MainRole = ((int, string))from.MainRole
};
}
}
Map<WindowsIdentity>(nameof(GlobalMappers.MapToWindowsIdentity))] public partial class WindowsUser
produces:
namespace Test;
public partial class WindowsUser
{
public static explicit operator Test.WindowsUser(System.Security.Principal.WindowsIdentity from)
{
return new Test.WindowsUser {
Name = from.Name,
IsAuthenticated = from.IsAuthenticated
};
}
public static explicit operator System.Security.Principal.WindowsIdentity(Test.WindowsUser from)
{
return Test.GlobalMappers.MapToWindowsIdentity(from);
}
}
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.4.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.200.88 | 71 | 7/18/2024 |
1.24.158.55 | 82 | 6/6/2024 |
1.24.158.53 | 78 | 6/6/2024 |
1.24.158.48 | 79 | 6/6/2024 |
1.24.145.16 | 93 | 5/24/2024 |
1.24.143.87 | 92 | 5/22/2024 |
1.24.140.54 | 85 | 5/19/2024 |
1.24.82.88 | 117 | 3/22/2024 |
1.24.72.77 | 113 | 3/12/2024 |
1.24.72.56 | 103 | 3/12/2024 |
1.24.70.72 | 122 | 3/10/2024 |
1.24.70.59 | 114 | 3/10/2024 |
1.24.69.90 | 114 | 3/9/2024 |
1.24.69.77 | 108 | 3/9/2024 |
1.24.69.62 | 111 | 3/9/2024 |
Interface implementation