Drastic.Transmute 0.5.7

dotnet add package Drastic.Transmute --version 0.5.7                
NuGet\Install-Package Drastic.Transmute -Version 0.5.7                
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="Drastic.Transmute" Version="0.5.7" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Drastic.Transmute --version 0.5.7                
#r "nuget: Drastic.Transmute, 0.5.7"                
#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 Drastic.Transmute as a Cake Addin
#addin nuget:?package=Drastic.Transmute&version=0.5.7

// Install Drastic.Transmute as a Cake Tool
#tool nuget:?package=Drastic.Transmute&version=0.5.7                

Drastic.Transmute

Drastic.Transmute is a port of Transmute to .NET. It supports .NET Standard 2.0 and .NET 8.0 (Standard, iOS, Catalyst, tvOS, and Android).

This exists to port other libraries that depend on it. If you depend on this library, it would be best to fork this library yourself and build on it, or switch to something else. YMMV.

Original Readme.

It's very common to convert data from a type to another and there's plenties of APIs to achieve it in .NET. Transmute was created to have a single centralized channel for all conversions.

Install

Available on NuGet

NuGet

Quickstart

//.netstandard
var b = Transmuter.Default.Convert<bool>(5); // true
var d = Transmuter.Default.Convert<DateTime>(1495820216); // 26/5/2017

//Xamarin.iOS
var c = Transmuter.Default.Convert<UIColor>(0xFF0000); // red

Functionalities

Custom converter

You can register a custom converters at any time with Register function :

Transmuter.Default.Register<T1,T2>(t1 => /* to t2 */);

If a converter already exists for those types, it will be replaced by yours.

Composability

Transmuter will try to find a way to convert a value to a the target type if a path exists.

So if you register those converters :

Transmuter.Default.Register<T1,T2>(...);
Transmuter.Default.Register<T2,T3>(...);
Transmuter.Default.Register<T3,T4>(...);

This conversions will succeed :

T1 t1 = ...;
T4 t4 = Transmuter.Default.Convert<T4>(t1); // T1 -> T2,T2 -> T3,T3 -> T4

Array conversions

If the source type and target type are arrays, and a converter has been registered to convert a source item to a target item, a converter will be available too :

var source = new[] { 10, 11, 12 };
var target = transmuter.Convert<string[]>(source); // { "10", "11", "12" }

Default converters

All platforms

From To Description
short byte[] BitConverter
int byte[] BitConverter
long byte[] BitConverter
float byte[] BitConverter
double byte[] BitConverter
bool byte[] BitConverter
byte[] short BitConverter
byte[] int BitConverter
byte[] long BitConverter
byte[] float BitConverter
byte[] double BitConverter
byte[] bool BitConverter
int short Convert.ChangeType
short int Convert.ChangeType
int long Convert.ChangeType
long int Convert.ChangeType
int float Convert.ChangeType
float int Convert.ChangeType
int double Convert.ChangeType
double int Convert.ChangeType
float double Convert.ChangeType
double float Convert.ChangeType
int bool > 0 ?
bool int true ? 1 : 0
short string ToString
int string ToString
long string ToString
float string ToString
double string ToString
bool string ToString
long DateTime from timestamp (ms)
DateTime long to timestamp (ms)

Xamarin.iOS

From To Description
DateTime NSDate conversion
NSDate DateTime conversion
CGRect int[] { x,y,w,h }
int[] CGRect { x,y,w,h }
CGRect float[] { x,y,w,h }
float[] CGRect { x,y,w,h }
int UIColor 0xAARRGGBB
UIColor int 0xAARRGGBB
bytes[] UIColor AA,RR,GG,BB
UIColor bytes[] AA,RR,GG,BB
bool UIColor true ? UIColor.Green : UIColor.Red
UIColor bool value == UIColor.Green
string UIImage NSData.FromFile → UIImage.LoadFromData

Xamarin.Android

From To Description
bool ViewStates true ? ViewStates.Visible : ViewStates.Gone
ViewStates bool value == ViewStates.Visible
int Color 0xAARRGGBB
Color int 0xAARRGGBB
bytes[] Color AA,RR,GG,BB
Color bytes[] AA,RR,GG,BB
string Bitmap BitmapFactory.DecodeFile

Roadmap / Ideas

  • Add collection conversion
  • Manage conversion errors
  • Adding Windows platform (with IValueConverter builder)

Contributions

Contributions are welcome! If you find a bug please report it and if you want a feature please report it.

If you want to contribute code please file an issue and create a branch off of the current dev branch and file a pull request.

License

MIT © Aloïs Deniel

Product 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 is compatible.  net8.0-android was computed.  net8.0-android34.0 is compatible.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-ios17.2 is compatible.  net8.0-maccatalyst was computed.  net8.0-maccatalyst17.2 is compatible.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-tvos17.2 is compatible.  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

    • No dependencies.
  • net8.0

    • No dependencies.
  • net8.0-android34.0

    • No dependencies.
  • net8.0-ios17.2

    • No dependencies.
  • net8.0-maccatalyst17.2

    • No dependencies.
  • net8.0-tvos17.2

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Drastic.Transmute:

Package Downloads
Drastic.Wires

A .NET 8.0 Port of Wires, Light binding library for Xamarin.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.5.7 154 6/6/2024