У меня возникают проблемы при использовании определенного типа 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: Не удалось найти переведенное имя поля дляid в типе OuterType + Model с полями: Name, Selected, Id
Это привело меня к мысли, что конвертер ищет соответствие типу по именам полей.Поэтому я изменил свой прокси следующим образом:
[<Proxy(typeof<OuterType.Model>)>]
type ProxyModel =
{
id : string
selected : bool
name : string
}
Выше приведено к ошибке компиляции:
Ошибка WebSharper FS9001: Не удалось найти поле типа записи F #: OuterType.Model.Selected WebSharper error FS9001: Не удалось найти поле типа записи F #: OuterType.Model.Name
, и я застрял.Что-то мне не хватает?
Обновление:
Приложение предназначено для netcoreapp2.1.Он использует следующие зависимости WebSharper (отрывок из моего paket.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)