gpt4 book ai didi

f# - 什么时候创建 fsc 一个 init@ 变量?

转载 作者:行者123 更新时间:2023-12-01 00:44:25 27 4
gpt4 key购买 nike

如果我从 XML 反序列化,我会收到以下错误:对象或值的初始化导致对象或值在完全初始化之前被递归访问。

我的 F# 代码如下所示:

[<...>]
[<...>]
[<DataContract>]
type DerivedClass() as X = class
inherit BaseClass()
[<DataMember>]
[<Input>]
[<DefaultValue>]
val mutable MemberName: myType
....

我使用 ILSpy 查看结果并获得 init@117 值,该值在初始化之前防止访问。

...       
[..., DataContract]
[System.Serializable]
public class DerivedClass : BaseClass
{
[..., DefaultValue, DataMember]
public modulName.myType MemberName;

internal int init@117;
...

我的所有其他类都没有按预期获得 init@ 变量和反序列化。为什么 init@ 有时创建有时不创建?答案可以帮助我修复我的代码。

编辑

@后面的数字代表该类型的源代码行。

编辑2

使用 as 引用类型创建 HasSelfReferentialConstructor 负责 InstanceMembersNeedSafeInitCheck so 改变

...
type DerivedClass() as X = class
...

...
type DerivedClass() = class
...

为我解决了这个问题。

最佳答案

使用 as 引用类型创建 HasSelfReferentialConstructor负责 InstanceMembersNeedSafeInitCheck so 改变

...
type DerivedClass() as X = class
...

...
type DerivedClass() = class
...

为我解决了这个问题。

关于f# - 什么时候创建 fsc 一个 init@ 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42713001/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com