public IntPtr MarshalManagedToNative(object value) { switch (value) { case null: return(IntPtr.Zero); case string str: return(U8StringConverter.ToNative(str)); default: throw new MarshalDirectiveException("Cannot marshal a non-string"); } }
public unsafe object MarshalNativeToManaged(IntPtr ptr) { return(U8StringConverter.ToManaged((byte *)ptr)); }