Both C strings and eina stringshares are bound as regular strings in EFL#, as
working directly with these types would demand unnecessary hassle from the user
But for eina containers this distinction is important, and since C# generics
do not provide a convenient way of dealing with the same type requiring a
different management based on some other condition (at least not without
compromising the usability for other types), we added a simple System.String
wrapper named Eina.Stringshare that works as a placeholder for signaling
Working with this class should be transparent in most use cases because it
converts to and from System.String implicitly.
It also implements equality/inequality methods for easier comparison with
strings and other stringshare objects.
Add new methods and a new container element trait for dealing specifically
with Eina_Stringshare elements.
Adapt eolian_mono to identify and generate the proper placeholder in methods
that require stringshare containers.
Remove some direct uses of DllImport-ed functions in favor of more flexible
manual binding methods.
Move Eina.Stringshare DllImport directives to a static class named
NativeMethods, in accordance with the code design warning CA1060.
Also add a TODO comment to move all other DllImport directives to this class.
Change parameter of the method Efl.Csharp.Application.OnInitialize from
Eina.Array<System.String> to string.
This will make this API more similar with the default C# way of receiving
command line arguments.
Add tests for containers storing stringshare elements.