Я пытаюсь вызвать C# функции уже существующей библиотеки (и у меня нет времени, чтобы порт всей библиотеки на F #)Interop с параметрами, передаваемых по иому
namespace ExportLib
{
public static class Xlsx
{
public static bool TestSave(string proposed, ref string filename, ref string save_log) {
из F # кода
let getUserFile(proposed) : UserFile =
let mutable filename = ""
let mutable save_log = ""
match Xlsx.TestSave(proposed, ref filename, ref save_log) with
| true -> FileResult(filename)
| false -> ErrorMsg(save_log)
предназначен для преобразования функции в алгебраические типы данных с целью сделать незаконные состояния unrepresentable.
type UserFile =
// The value here is the file path.
| FileResult of string
// The value here is the error msg.
| ErrorMsg of string
Моя проблема заключается в том, что mutable
F # filename
остается неизменным, несмотря на это назначается в функции C# (та же проблема с out string
вместо ref string
)
Правильно. Кроме того, вы должны иметь возможность сохранять декларации такими, какие они есть, и передавать ссылки с помощью '& filename' и' & save_log'. – kvb