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

When creats fsc an init@ variable?

如果我从 XML 反序列化,我会收到以下错误:The initialization of an object or value resulted in an object or value being accessed recursively before it was fully initialized.

我的 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 如此改变

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

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

为我解决了这个问题。

as 引用类型创建 HasSelfReferentialConstructorreponsible for theInstanceMembersNeedSafeInitCheck 所以改变

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

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

为我解决了这个问题。