在 F# Web 应用程序中使用某种 C# 类型时遇到问题。我在 F# 应用程序中引用的库中存在以下 C# 类型:
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# web 应用程序的一部分):
[<Proxy(typeof<OuterType.Model>)>]
type ProxyModel =
{
ID : string
Selected : bool
Name : string
}
我的项目编译正常,但我收到运行时序列化错误:
System.Exception:RPC JSON 转换期间出错 ---> System.Exception:无法在 OuterType+Model 类型中查找已翻译字段名称的 id 字段:名称、选定对象、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 依赖项(摘自我的 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)