У меня возникают проблемы при использовании определенного типа C# в веб-приложении F#. Следующий тип C# присутствует в библиотеке, на которую я ссылаюсь в своем приложении F#:
public static class OuterType
{
public class Model
{
private readonly string id;
private readonly bool selected;
private string name;
internal Model() : this(string.Empty) { }
public Model(string id) : this(id, false) { }
public Model(string id, bool selected)
{
this.id = name = id;
this.selected = selected;
}
[Localizable(false)]
public string ID => id;
public bool Selected => selected;
[Localizable(true)]
public string Name
{
get => name;
set => name = value;
}
}
}
Я написал для него прокси (как часть моего веб-приложения F#):
[<Proxy(typeof<OuterType.Model>)>]
type ProxyModel =
{
ID : string
Selected : bool
Name : string
}
Мой проект компилируется нормально, но я получаю ошибку сериализации во время выполнения:
System.Exception: ошибка при преобразовании RPC JSON ---> System.Exception: не удалось найти переведенное имя поля для идентификатора в типе OuterType+Model с полями: Name, Selected, Id
Это заставило меня поверить, что преобразователь ищет соответствие типу по именам полей. Поэтому я изменил свой прокси следующим образом:
[<Proxy(typeof<OuterType.Model>)>]
type ProxyModel =
{
id : string
selected : bool
name : string
}
Вышеприведенное приводит к ошибке компиляции:
Ошибка WebSharper FS9001: не удалось найти поле типа записи F#: OuterType.Model.Selected Ошибка WebSharper FS9001: не удалось найти поле типа записи F#: OuterType.Model.Name
и я застрял. Есть ли что-то, что мне не хватает?
Обновлять:
Приложение нацелено на netcoreapp2.1. Он использует следующие зависимости WebSharper (выдержка из моего пакета.lock):
WebSharper (4.5.9.330)
WebSharper.AspNetCore (4.5.3.104)
WebSharper.FSharp (4.5.9.330)
WebSharper.Html (4.5.1.153)
WebSharper.Reactive (4.5.1.139)
WebSharper.UI (4.5.8.161)