dotnet interop: marshalling strings correctly