lauromoura pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=fee55857e47234067a4c773e8c7eb291ae61cca2

commit fee55857e47234067a4c773e8c7eb291ae61cca2
Author: Bruno da Silva Belo <bruno.b...@expertisesolutions.com.br>
Date:   Tue Nov 12 17:07:48 2019 -0300

    csharp: Add To and From methods for implicit conversion.
    
    Summary: ref T8430
    
    Reviewers: lauromoura, felipealmeida, segfaultxavi, YOhoho
    
    Reviewed By: lauromoura
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Maniphest Tasks: T8430
    
    Differential Revision: https://phab.enlightenment.org/D10616
---
 src/bindings/mono/eina_mono/eina_error.cs      |  26 ++-
 src/bindings/mono/eina_mono/eina_value.cs      | 242 +++++++++++++++++++++----
 src/bindings/mono/eldbus_mono/eldbus_common.cs | 212 ++++++++++++++++------
 3 files changed, 377 insertions(+), 103 deletions(-)

diff --git a/src/bindings/mono/eina_mono/eina_error.cs 
b/src/bindings/mono/eina_mono/eina_error.cs
index c936b88179..6774545603 100644
--- a/src/bindings/mono/eina_mono/eina_error.cs
+++ b/src/bindings/mono/eina_mono/eina_error.cs
@@ -79,20 +79,28 @@ public struct Error : IComparable<Error>, IEquatable<Error>
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     /// <param name="val">Value to be converted to Error</param>
-    static public implicit operator Error(int val)
-    {
-        return new Error(val);
-    }
+    public static implicit operator Error(int val) => FromInt32(val);
+
+    /// <summary>
+    ///   Converts a <see cref="int" /> to a <see cref="Error" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="val">The <see cref="int" /> to be converted.</param>
+    public static Error FromInt32(int val) => new Error(val);
 
     /// <summary>
     ///   Int conversion from Error.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     /// <param name="error">Error identifier to be converted to int</param>
-    static public implicit operator int(Error error)
-    {
-        return error.code;
-    }
+    public static implicit operator int(Error error) => ToInt32(error);
+
+    /// <summary>
+    ///   Converts a <see cref="Error" /> to a <see cref="int" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="error">The <see cref="Error" /> to be converted.</param>
+    public static int ToInt32(Error error) => error.code;
 
     /// <summary>
     ///   Transform the object to a string representing the object.
@@ -213,7 +221,7 @@ public struct Error : IComparable<Error>, IEquatable<Error>
     {
         if (object.ReferenceEquals(obj, null))
             return false;
-            
+
         return this.Equals((Error)obj);
     }
 
diff --git a/src/bindings/mono/eina_mono/eina_value.cs 
b/src/bindings/mono/eina_mono/eina_value.cs
index 365d60bed3..f8bfc08d3f 100644
--- a/src/bindings/mono/eina_mono/eina_value.cs
+++ b/src/bindings/mono/eina_mono/eina_value.cs
@@ -897,11 +897,15 @@ public class ValueTypeBox
     }
 
     public static implicit operator ValueTypeBox(ValueType v)
-    {
-        return new ValueTypeBox(v);
-    }
+        => FromValueType(v);
+
+    public static ValueTypeBox FromValueType(ValueType v)
+        => new ValueTypeBox(v);
 
     public static implicit operator ValueType(ValueTypeBox box)
+        => ToValueType(box);
+
+    public static ValueType ToValueType(ValueTypeBox box)
     {
         if (box == null)
         {
@@ -1565,24 +1569,30 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
-    public static implicit operator ValueNative(Value v)
-    {
-        return v.GetNative();
-    }
+    public static implicit operator ValueNative(Value v) => ToValueNative(v);
+
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public static ValueNative ToValueNative(Value v) => v.GetNative();
 
     /// <summary>Implicit conversion from native struct representation to 
managed wrapper.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     [EditorBrowsable(EditorBrowsableState.Never)]
-    public static implicit operator Value(ValueNative v)
-    {
-        return new Value(v);
-    }
+    public static implicit operator Value(ValueNative v) => FromValueNative(v);
+
+    [EditorBrowsable(EditorBrowsableState.Never)]
+    public static Value FromValueNative(ValueNative v) => new Value(v);
 
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(byte x)
+    public static implicit operator Value(byte x) => FromByte(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="byte" />
+    /// </summary>
+    /// <param name="x">The <see cref="byte" /> to be converted.</param>
+    public static Value FromByte(byte x)
     {
         var v = new Eina.Value(ValueType.Byte);
         v.Set(x);
@@ -1593,7 +1603,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator byte(Value v)
+    public static implicit operator byte(Value v) => ToByte(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="byte" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static byte ToByte(Value v)
     {
         byte b;
         v.Get(out b);
@@ -1604,7 +1621,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(sbyte x)
+    public static implicit operator Value(sbyte x) => FromSByte(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="sbyte" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="sbyte" /> to be converted.</param>
+    public static Value FromSByte(sbyte x)
     {
         var v = new Eina.Value(ValueType.SByte);
         v.Set(x);
@@ -1615,7 +1639,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator sbyte(Value v)
+    public static implicit operator sbyte(Value v) => ToSByte(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="sbyte" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static sbyte ToSByte(Value v)
     {
         sbyte b;
         v.Get(out b);
@@ -1626,7 +1657,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(short x)
+    public static implicit operator Value(short x) => FromShort(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="short" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="short" /> to be converted.</param>
+    public static Value FromShort(short x)
     {
         var v = new Eina.Value(ValueType.Short);
         v.Set(x);
@@ -1637,7 +1675,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator short(Value v)
+    public static implicit operator short(Value v) => ToInt16(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="short" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static short ToInt16(Value v)
     {
         short b;
         v.Get(out b);
@@ -1648,7 +1693,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(ushort x)
+    public static implicit operator Value(ushort x) => FromUInt16(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="ushort" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="ushort" /> to be converted.</param>
+    public static Value FromUInt16(ushort x)
     {
         var v = new Eina.Value(ValueType.UShort);
         v.Set(x);
@@ -1659,7 +1711,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator ushort(Value v)
+    public static implicit operator ushort(Value v) => ToUInt16(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="ushort" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static ushort ToUInt16(Value v)
     {
         ushort b;
         v.Get(out b);
@@ -1670,18 +1729,33 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(int x)
+    public static implicit operator Value(int x) => FromInt32(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="int" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="int" /> to be converted.</param>
+    public static Value FromInt32(int x)
     {
         var v = new Eina.Value(ValueType.Int32);
         v.Set(x);
 
         return v;
+
     }
 
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator int(Value v)
+    public static implicit operator int(Value v) => ToInt32(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="int" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static int ToInt32(Value v)
     {
         int b;
         v.Get(out b);
@@ -1692,7 +1766,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(uint x)
+    public static implicit operator Value(uint x) => FromUInt32(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="uint" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="uint" /> to be converted.</param>
+    public static Value FromUInt32(uint x)
     {
         var v = new Eina.Value(ValueType.UInt32);
         v.Set(x);
@@ -1703,7 +1784,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator uint(Value v)
+    public static implicit operator uint(Value v) => ToUInt32(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="uint" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static uint ToUInt32(Value v)
     {
         uint b;
         v.Get(out b);
@@ -1714,7 +1802,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(long x)
+    public static implicit operator Value(long x) => FromInt64(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="long" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="long" /> to be converted.</param>
+    public static Value FromInt64(long x)
     {
         var v = new Eina.Value(ValueType.Long);
         v.Set(x);
@@ -1725,7 +1820,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator long(Value v)
+    public static implicit operator long(Value v) => ToInt64(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="long" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static long ToInt64(Value v)
     {
         long b;
         v.Get(out b);
@@ -1736,7 +1838,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(ulong x)
+    public static implicit operator Value(ulong x) => FromUInt64(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="ulong" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="ulong" /> to be converted.</param>
+    public static Value FromUInt64(ulong x)
     {
         var v = new Eina.Value(ValueType.ULong);
         v.Set(x);
@@ -1747,7 +1856,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator ulong(Value v)
+    public static implicit operator ulong(Value v) => ToUInt64(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="ulong" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static ulong ToUInt64(Value v)
     {
         ulong b;
         v.Get(out b);
@@ -1758,7 +1874,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(float x)
+    public static implicit operator Value(float x) => FromSingle(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="float" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="float" /> to be converted.</param>
+    public static Value FromSingle(float x)
     {
         var v = new Eina.Value(ValueType.Float);
         v.Set(x);
@@ -1769,7 +1892,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator float(Value v)
+    public static implicit operator float(Value v) => ToSingle(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="float" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static float ToSingle(Value v)
     {
         float b;
         v.Get(out b);
@@ -1780,7 +1910,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(double x)
+    public static implicit operator Value(double x) => FromDouble(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="double" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="double" /> to be converted.</param>
+    public static Value FromDouble(double x)
     {
         var v = new Eina.Value(ValueType.Double);
         v.Set(x);
@@ -1791,7 +1928,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator double(Value v)
+    public static implicit operator double(Value v) => ToDouble(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="double" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static double ToDouble(Value v)
     {
         double b;
         v.Get(out b);
@@ -1802,7 +1946,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator Value(string x)
+    public static implicit operator Value(string x) => FromString(x);
+
+    /// <summary>
+    ///   Conversion to a <see cref="Value" /> from a <see cref="string" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="x">The <see cref="string" /> to be converted.</param>
+    public static Value FromString(string x)
     {
         var v = new Eina.Value(ValueType.String);
         v.Set(x);
@@ -1813,7 +1964,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Implicit conversion.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static implicit operator string(Value v)
+    public static implicit operator string(Value v) => ToString(v);
+
+    /// <summary>
+    ///   Conversion to a <see cref="string" /> from a <see cref="Value" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static string ToString(Value v)
     {
         string b;
         v.Get(out b);
@@ -1944,7 +2102,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Explicit conversion from EFL objects.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static explicit operator Value(Efl.Object obj)
+    public static explicit operator Value(Efl.Object obj) => FromObject(obj);
+
+    /// <summary>
+    ///   Converts a <see cref="Efl.Object" /> to a <see cref="Value" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="obj">The <see cref="Efl.Object" /> to be 
converted.</param>
+    public static Value FromObject(Efl.Object obj)
     {
         var v = new Eina.Value(ValueType.Object);
         v.Set(obj);
@@ -1954,7 +2119,14 @@ public class Value : IDisposable, IComparable<Value>, 
IEquatable<Value>
     /// <summary>Explicit conversion from Value to Efl.Objects.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
-    public static explicit operator Efl.Object(Value v)
+    public static explicit operator Efl.Object(Value v) => ToObject(v);
+
+    /// <summary>
+    ///   Converts a <see cref="Value" /> to a <see cref="Object" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="v">The <see cref="Value" /> to be converted.</param>
+    public static Efl.Object ToObject(Value v)
     {
         Efl.Object obj;
         v.Get(out obj);
diff --git a/src/bindings/mono/eldbus_mono/eldbus_common.cs 
b/src/bindings/mono/eldbus_mono/eldbus_common.cs
index 562f61a4e3..1db6fe486b 100644
--- a/src/bindings/mono/eldbus_mono/eldbus_common.cs
+++ b/src/bindings/mono/eldbus_mono/eldbus_common.cs
@@ -64,20 +64,29 @@ public struct ObjectPath
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     /// <param name="str">The string of the path.</param>
-    public static implicit operator ObjectPath(string str)
-    {
-        return new ObjectPath(str);
-    }
+    public static implicit operator ObjectPath(string str) => FromString(str);
+
+    /// <summary>
+    ///   Converts a <see cref="string" /> to a <see cref="ObjectPath" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="str">The <see cref="string" /> of the path.</param>
+    public static ObjectPath FromString(string str) => new ObjectPath(str);
 
     /// <summary>
     /// Conversion operator of string from ObjectPath.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     /// <param name="path">The ObjectPath to be converted.</param>
-    public static implicit operator string(ObjectPath path)
-    {
-        return path.value;
-    }
+    public static implicit operator string(ObjectPath path) => ToString(path);
+
+    /// <summary>
+    /// Converts a <see cref="ObjectPath" /> to a <see cref="string" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="path">The ObjectPath to be converted.</param>
+    public static string ToString(ObjectPath path) => path.value;
+
 }
 
 /// <summary>
@@ -109,9 +118,15 @@ public struct SignatureString
     /// </summary>
     /// <param name="str">The string of the signature.</param>
     public static implicit operator SignatureString(string str)
-    {
-        return new SignatureString(str);
-    }
+        => FromString(str);
+
+    /// <summary>
+    /// Converts a <see cref="string" /> to a <see cref="SignatureString" />
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="str">The string of the signature.</param>
+    public static SignatureString FromString(string str)
+        => new SignatureString(str);
 
     /// <summary>
     /// Conversion operator of string from SignatureString.
@@ -119,9 +134,9 @@ public struct SignatureString
     /// </summary>
     /// <param name="sig">The SignatureString to be conversion.</param>
     public static implicit operator string(SignatureString sig)
-    {
-        return sig.value;
-    }
+        => ToString(sig);
+
+    public static string ToString(SignatureString sig) => sig.value;
 }
 
 /// <summary>
@@ -152,22 +167,29 @@ public struct UnixFd
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     /// <param name="fd">The file descriptor.</param>
-    public static implicit operator UnixFd(Int32 fd)
-    {
-        return new UnixFd(fd);
-    }
+    public static implicit operator UnixFd(Int32 fd) => FromInt32(fd);
+
+    /// <summary>
+    /// Converts a <see cref="Int32" /> to a <see cref="UnixFd" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="fd">The file descriptor.</param>
+    public static UnixFd FromInt32(Int32 fd) => new UnixFd(fd);
 
     /// <summary>
     /// Conversion operator of Int32 from UnixFd.
     /// <para>Since EFL 1.23.</para>
     /// </summary>
     /// <param name="unix_fd">The UnixFd to be converted.</param>
-    public static implicit operator Int32(UnixFd unix_fd)
-    {
-        return unix_fd.value;
-    }
-}
+    public static implicit operator Int32(UnixFd unix_fd) => ToInt32(unix_fd);
 
+    /// <summary>
+    ///   Converts a <see cref="UnixFd" /> to a <see cref="Int32" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="unix_fd">The <see cref="UnixFd" /> to be 
converted.</param>
+    public static Int32 ToInt32(UnixFd unix_fd) => unix_fd.value;
+}
 /// <summary>
 /// Arguments of EldBus.
 /// <para>Since EFL 1.23.</para>
@@ -573,9 +595,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The byte to be converted.</param>
     public static implicit operator BasicMessageArgument(byte arg)
-    {
-        return new ByteMessageArgument(arg);
-    }
+        => FromByte(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="byte" /> to a <see cref="BasicMessageArgument" 
/>.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="byte" /> to be converted.</param>
+    public static BasicMessageArgument FromByte(byte arg)
+        => new ByteMessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from bool.
@@ -583,9 +611,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The bool to be converted.</param>
     public static implicit operator BasicMessageArgument(bool arg)
-    {
-        return new BoolMessageArgument(arg);
-    }
+        => FromBoolean(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="bool" /> to a <see cref="BasicMessageArgument" 
/>.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="bool" /> to be converted.</param>
+    public static BasicMessageArgument FromBoolean(bool arg)
+        => new BoolMessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from Int16.
@@ -593,9 +627,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The int16 to be converted.</param>
     public static implicit operator BasicMessageArgument(Int16 arg)
-    {
-        return new Int16MessageArgument(arg);
-    }
+        => FromInt16(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="Int16" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="Int16" /> to be converted.</param>
+    public static BasicMessageArgument FromInt16(Int16 arg)
+        => new Int16MessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from unsigned int16.
@@ -603,9 +643,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The unsigned int16 to be converted.</param>
     public static implicit operator BasicMessageArgument(UInt16 arg)
-    {
-        return new UInt16MessageArgument(arg);
-    }
+        => FromUInt16(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="UInt16" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="UInt16" /> to be converted.</param>
+    public static BasicMessageArgument FromUInt16(UInt16 arg)
+        => new UInt16MessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from int32.
@@ -613,9 +659,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The int32 to be converted.</param>
     public static implicit operator BasicMessageArgument(Int32 arg)
-    {
-        return new Int32MessageArgument(arg);
-    }
+        => FromInt32(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="Int32" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="Int32" /> to be converted.</param>
+    public static BasicMessageArgument FromInt32(Int32 arg)
+        => new Int32MessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from unsigned int32.
@@ -623,9 +675,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The unsigned int32 to be converted.</param>
     public static implicit operator BasicMessageArgument(UInt32 arg)
-    {
-        return new UInt32MessageArgument(arg);
-    }
+        => FromUInt32(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="UInt32" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="UInt32" /> to be converted.</param>
+    public static BasicMessageArgument FromUInt32(UInt32 arg)
+        => new UInt32MessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from int64.
@@ -633,9 +691,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The int64 to be converted.</param>
     public static implicit operator BasicMessageArgument(Int64 arg)
-    {
-        return new Int64MessageArgument(arg);
-    }
+        => FromInt64(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="Int64" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="Int64" /> to be converted.</param>
+    public static BasicMessageArgument FromInt64(Int64 arg)
+        => new Int64MessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from unsigned int64.
@@ -643,9 +707,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The unsigned int64 to be converted.</param>
     public static implicit operator BasicMessageArgument(UInt64 arg)
-    {
-        return new UInt64MessageArgument(arg);
-    }
+        => FromUInt64(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="UInt64" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="UInt64" /> to be converted.</param>
+    public static BasicMessageArgument FromUInt64(UInt64 arg)
+        => new UInt64MessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from string.
@@ -653,9 +723,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">the string to be converted.</param>
     public static implicit operator BasicMessageArgument(string arg)
-    {
-        return new StringMessageArgument(arg);
-    }
+        => FromString(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="string" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="string" /> to be converted.</param>
+    public static BasicMessageArgument FromString(string arg)
+        => new StringMessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from signature.
@@ -663,9 +739,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The signature to be converted.</param>
     public static implicit operator BasicMessageArgument(SignatureString arg)
-    {
-        return new SignatureMessageArgument(arg);
-    }
+        => FromSignatureString(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="SignatureString" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="SignatureString" /> to be 
converted.</param>
+    public static BasicMessageArgument FromSignatureString(SignatureString arg)
+        => new SignatureMessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from object path.
@@ -673,9 +755,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The object path to be converted.</param>
     public static implicit operator BasicMessageArgument(ObjectPath arg)
-    {
-        return new ObjectPathMessageArgument(arg);
-    }
+        => FromObjectPath(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="ObjectPath" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="ObjectPath" /> to be 
converted.</param>
+    public static BasicMessageArgument FromObjectPath(ObjectPath arg)
+        => new ObjectPathMessageArgument(arg);
 
     /// <summary>
     /// Conversion operator of BasicMessageArgument from unix fd.
@@ -683,9 +771,15 @@ public abstract class BasicMessageArgument
     /// </summary>
     /// <param name="arg">The unix fd to be converted.</param>
     public static implicit operator BasicMessageArgument(UnixFd arg)
-    {
-        return new UnixFdMessageArgument(arg);
-    }
+        => FromUnixFd(arg);
+
+    /// <summary>
+    ///   Converts a <see cref="UnixFd" /> to a <see 
cref="BasicMessageArgument" />.
+    /// <para>Since EFL 1.23.</para>
+    /// </summary>
+    /// <param name="arg">The <see cref="UnixFd" /> to be converted.</param>
+    public static BasicMessageArgument FromUnixFd(UnixFd arg)
+        => new UnixFdMessageArgument(arg);
 }
 
 /// <summary>

-- 


Reply via email to